xcodebuild如何运行多个testExamples函数而无需在测试

时间:2018-04-10 01:14:15

标签: xcode xctest

此命令将在Simulator上运行2个测试用例的UI测试:

  

xcodebuild test -project MyLib.xcodeproj -scheme MyAppUITests -destination' platform = iOS Simulator,OS = 11.3,name = iPhone 5s' -only-testing:MyAppUITests / MyAppUITests / testExample -only-testing:MyAppUITests / MyAppUITests / testExample2 | xcpretty --test --color

这导致 testExample testExample2 被执行,但是测试中的应用程序在两个测试用例执行之间重新启动,尽管两者的测试设置相同

我怎样才能让应用程序启动一次?

1 个答案:

答案 0 :(得分:0)

如果您想连续执行多个操作而不重新启动,则需要将它们作为单个测试方法的一部分来完成。

在每次测试之间重新启动应用程序的原因是为了确保每个测试的结果独立于其他测试。如果您想确保在测试失败时失败,那么重复每次测试的设置是必不可少的,因为测试用例出现了问题。

如果将多个测试链接在一起而不重置状态,并且测试的一部分失败,则测试的其他部分将受到影响,您将无法获得明确的测试结果。

虽然setUp()方法确实作为此框架的一部分运行多次,但这对于确保测试独立性是必要的。自动化UI测试的强大之处在于自动化(无需手动操作,重复执行相同的测试)以及他们可以为您提供的数据(明确说明哪些功能有效或无效),而不是速度。在每个测试之间重新启动应用程序并为每个测试运行setUp()不应该增加测试套件执行的时间复杂性。

例如,假设您有四个组件,A,B,C和D,以及B中断。 A,C和D都在工作。

如果您只有一个大的测试方法testAAndBAndCAndD(),并且它失败了,您将无法判断A,B,C或D是否已损坏,或者是否所有这些方法都已损坏。

如果您有四个单独的测试,testA()testB()testC()testD(),则只有testB()会失败,您将立即知道测试结果表明问题在于B。

我希望这说明为什么有必要在每次测试之间重新启动应用程序。