XCUITest测试执行顺序

时间:2017-10-13 03:45:15

标签: ios xcode automated-tests xctest xcuitest

是否有任何已知的方法来影响 XCUITest 调用测试方法的顺序?目前看来哪个测试方法的顺序是完全随意的。

这使得无法定义特定订单。一般来说,Xcode管理XCUITest运行的方式是次优的,因为您必须为每个测试用例定义一个测试函数。更希望从一种方法启动一个完整的测试会话,这样就可以在例如session:features:scenario中构建自己的测试。

......这正是我试图做的事情,因为我们正在遵循Calabash风格的测试结构和我围绕XCUITest编写的框架提供了大量额外的功能功能(如Testrail集成)。

我尝试以这样一种方式实现框架:所有功能和方案都是通过单个test()方法组织和启动的。如果Xcode允许它,但是因为它终止并在每个场景之间启动应用程序是有问题的,因为它会导致主线程停顿甚至崩溃。因此,我已经添加了对我们框架的支持,以便为每个测试定义一个方法的旧式Xcode方法,但是Xcode搞砸了订单,这会影响Testrail的日志和报告的生成。 / p>

2 个答案:

答案 0 :(得分:1)

XCUITest以字母升序执行测试(除非随机化)。您可以按照以下顺序命名测试方法,如下所示:

function counter

test01FirstCase() { //test code }

test02ThirdCaseButRunsSecond() { //test code }

答案 1 :(得分:0)

如果您不想让应用在每种测试方法之后都无法启动和终止,那么只需将XCUIApplication().launch()方法从Setup方法中移除,并将其置于所有功能的第一个测试功能中,这就是应用将仅启动的方式一次和第二次执行测试将完全从第一次测试结束的地方开始。

如果要保持执行顺序,一种方法是定义以下顺序之一

      func Test01(){} 
      func Test01(){}
      func Test_A(){}
      func Test_B(){}
      func Test01_AnyString(){}
      func Test02_AnyString(){}

或者如果您想从单个方法开始所有执行,请遵循以下步骤

     func Test01_veryFirstTestMethod(){

           secondTestMethod()
           thirdTestMethod()
           forthTestMethod()
           so on............
}

注意:您的secondTestMethodthirdTestMethodforthTestMethod在函数声明中将没有test关键字