在XCTest中的每个测试用例后停止应用程序终止

时间:2016-11-18 12:47:29

标签: xctest termination

我是XCTest的新手,我有一个针对我的应用程序的小示例项目,其中我有10个测试用例,每个测试用例是相互依赖的,我在这里遇到的问题是如果我在每个测试用例之后运行我的测试套件我的应用程序是终止并调用下一个方法,我不希望它关闭应用程序,但它必须从测试用例1完成的同一个地方继续

提前致谢

2 个答案:

答案 0 :(得分:1)

测试应该彼此独立。请记住,Xcode测试运行顺序的算法可能随时发生变化。进行相互依赖的测试是一个脆弱的系统,因为如果一个测试失败,下一次测试的状态可能会出错,所有后续测试都会失败,提供错误的负面反馈。

如果必须依赖彼此的测试,只需将所有代码放入具有多个断言的单个测试中。您可能希望将continueAfterFailure设置为true。

答案 1 :(得分:0)

由于xcode ui test中不知道测试用例的序列,因此仅执行一次app来执行测试用例是一个坏主意。

但是,如果你想要它,那么这就是解决方案。在swift 2.2和2.3中,我使用

dispatch_once 

满足这种要求。

在您的测试用例类中,我认为您使用

XCUIApplication.launch() method in  setUp() method.

你必须在这里使用dispatch_once()。如果你对XCUIApplication.launch()使用这个dispatch_once,这只会启动一次应用程序。

这是swift 2.2和2.3的解决方案:

 private static var launchAppOnce: () = {
    let app = XCUIApplication()
    app.launch()
    //do some code if you needed after launch app before run test cases.
}()

struct Static {
    static var dispatchOnceToken: Int = 0
}

override func setUp() {
    super.setUp()
    continueAfterFailure = false
      _ = urclassname.launchAppOnce
}

override func tearDown() {
    super.tearDown()
}

在测试用例类中使用上面的代码。 这将只启动应用程序一次并从完成之前的测试用例开始下一个测试用例。