Swift 测试中有等效的 XCTFail() 吗?

问题描述 投票:0回答:1

我正在将一些单元测试从 XCTest 转换为 Swift 测试,并且我正在寻找一种故意使测试失败的方法,如下所示:

if let event = SentryManager.events.first, let message = event.message {
  XCTAssertEqual(event.formatted, "hello")
} else {
  XCTFail()
}

我主要在测试期间展开值时使用它,到目前为止我还没有找到“失败测试”命令,这使得翻译这些单元测试有点烦人。

不完美的替代方案:

使用可选的展开,就像这样

#expect(SentryManager.events.first?.message?.formatted == "hello")

导致 Optional("hello")"hello" 之间的比较,因此不起作用。

强制展开,就像这样

#expect(SentryManager.events.first!.message!.formatted == "hello")
如果我们检查的字符串是错误的,那么这里会正确失败。不过,我想避免在这里强制展开,尽管这是一个单元测试并且比平常更好,一旦 linter 开始抱怨,这将需要使用一些 swiftlint 忽略。

有没有办法使用新的 Swift 测试框架故意让测试失败?

ios swift xctest swift-testing
1个回答
0
投票
最后,XCTest 有一个功能,

XCTFail()

,可以导致测试立即无条件失败。当语言语法不允许使用 
XCTAssert()
 函数时,此函数非常有用。要使用测试库记录无条件问题,请使用 
Issue.record(_:sourceLocation:)
 函数:

请参阅文档中的

从 XCTest 迁移测试指南。还有一个例子。

© www.soinside.com 2019 - 2024. All rights reserved.