跳过Xcode中的多项测试

问题描述

我正在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文档页面。