XCTest 测试套件中的共享测试

cti*_*tze 4 unit-testing objective-c ios xctest

我有一个类,它可以配置为做 2 件稍微不同的事情。我想测试两条路径。该类是UIViewControllerInterface Builder的后代,大部分配置都在Interface Builder 中进行。我需要验证故事板场景和它们的插座是否以相同的方式连接,但还需要检查行为的差异。

为此,我想使用共享的 XCTest 套件。

一种用于左手,一种用于右手。使用该应用程序时,两者都会出现。第一个(右手)触发到另一个的转场。最后一个(左手)应该触发不同的转场。例如,这就是它不同的地方。

现在我想通过测试来验证 segue。我想创建一个BothHandSharedTests套件,两个视图控制器实例测试都使用它来验证它们的所有共同点。然而,BothHandSharedTests该类被视为一个自包含的测试套件,它显然不是。

我想出了这些策略:

  • 从抽象的 XCTest 后代继承,如上所述(似乎并不那么容易),
  • 为公共属性编写一个测试套件,并使用两者之一作为测试对象,并为差异添加两个较小的套件。

你会如何解决这个问题?

Rud*_*vič 5

这是 Swift 中的解决方案:

class AbstractTests: XCTestCase {

    // Your tests here

    override func perform(_ run: XCTestRun) {
        if type(of: self) != AbstractTests.self {
            super.perform(run)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)