问题描述
我正在Swift应用中编写单元测试。
我有一些要跳过的测试,使用标志shouldSkip
,例如-
if shouldSkip {
throw XCTSkip()
}
问题是- 我不希望所有测试都必须一遍又一遍地写这行,而所有跳过的测试都需要标记为“已跳过”(灰色箭头,表示不通过或未通过)。
所以我考虑过改用invokeTest
或使用setup
跳过true
中的标志时跳过所有测试,类似-
override func setUp() {
if shouldSkip {
throw XCTSkip()
}
super.setUp()
}
但是我无法将测试标记为已跳过(仅通过或失败)
关于如何跳过(并标记为跳过)大量测试(是否在同一文件中)的任何想法?
我了解测试计划和方案,但是我需要运行测试,并且反对不运行测试而被跳过。
解决方法
由于它是XCTSkip
,因此需要抛出Error
,仅创建它就不会影响测试结果。
或者您可以使用XCTSkipIf
函数,在满足传递条件的情况下跳过测试。
因此,在您要跳过的测试中,只需致电XCTSkipIf(shouldSkip)
。或者,如果您希望避免在所有测试中都编写它,则可以在setUpWithError
的变体setup
中进行。
正确的方法不是if shouldSkip { XCTSkip() }
,而是XCTSkipIf(shouldSkip)
或if shouldSkip { throw XCTSkip() }
。
使用这两种解决方案之一可以将测试正确标记为已跳过。
有关更多信息,请参见Methods for Skipping Tests文档页面。