Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios XCUITest测试执行顺序_Ios_Xcode_Automated Tests_Xctest_Xcuitest - Fatal编程技术网

Ios XCUITest测试执行顺序

Ios XCUITest测试执行顺序,ios,xcode,automated-tests,xctest,xcuitest,Ios,Xcode,Automated Tests,Xctest,Xcuitest,是否有任何已知的方法可以影响XCuTest调用测试方法的顺序?目前,以何种顺序调用哪个测试方法似乎是完全任意的 这使得无法定义特定的顺序。一般来说,Xcode管理XUITest运行的方式是次优的,因为您必须为每个测试用例定义一个测试函数。如果只从一个方法启动一个完整的测试会话,那么您就可以在session:features:scenarios(会话:特性:场景)中构建自己的测试 。。。这正是我想要做的,因为我们遵循葫芦式的测试结构,我围绕XCUITest编写的框架提供了许多附加功能(例如Test

是否有任何已知的方法可以影响XCuTest调用测试方法的顺序?目前,以何种顺序调用哪个测试方法似乎是完全任意的

这使得无法定义特定的顺序。一般来说,Xcode管理XUITest运行的方式是次优的,因为您必须为每个测试用例定义一个测试函数。如果只从一个方法启动一个完整的测试会话,那么您就可以在session:features:scenarios(会话:特性:场景)中构建自己的测试

。。。这正是我想要做的,因为我们遵循葫芦式的测试结构,我围绕XCUITest编写的框架提供了许多附加功能(例如Testrail集成)


我试图以这样一种方式实现该框架:所有功能和场景都是从一个
test()
方法组织和启动的。如果Xcode允许的话,这是可行的,但事实证明,在每个场景之间终止和启动应用程序是有问题的,因为它会导致主线程暂停甚至崩溃。因此,我为我们的框架添加了支持,以旧的方式为每个测试定义一个方法,但顺序被Xcode弄乱了,这会弄乱Testrail日志和报告的生成。

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

test01FirstCase(){//test code}

test02ThirdCaseButRunsSecond(){//test code}


test03SecondCaseButRunsThird(){//test code}

如果你不想让你的应用程序在每个测试方法之后都启动和终止,那么只需将
xguiapplication().launch()
方法从安装方法中取出,并将其放在最上面的第一个测试函数中,这就是应用程序仅启动一次的方式,第二次测试执行将从第一次测试结束的位置开始

如果您想要维护执行顺序,一种方法是定义以下任意一种顺序

      func Test01(){} 
      func Test01(){}
      func Test_A(){}
      func Test_B(){}
      func Test01_AnyString(){}
      func Test02_AnyString(){}
或者,如果您想从单个方法开始所有执行,请执行以下步骤

     func Test01_veryFirstTestMethod(){

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

注意:您的
secondTestMethod
thirdTestMethod
forhttestmethod
在函数声明中不会有test关键字

,据我所知,您无法定义或更改顺序。事实上,根据Ash Furrow的雷达,测试调用应该是随机的:。我不认为我们不应该选择测试是否应该是随机的。在任何情况下,我认为以数字命名测试方法似乎总是按顺序执行,例如test1、test2、test3,因为我们有自己的报告度量,不关心Xcode报告,所以命名对我们来说是可以的。但是你不应该期望这种行为永远存在。据我所知,这没有记录在案。如果所有的执行都是从一个方法开始的,那么一个方法中的任何失败都不允许执行以下方法。另外,我建议在
setUp()
函数中启动应用程序。要在每次测试之前停止启动并使用下面的现有实例,可以使用以下方法:
func setUp(){let app=xguiapplication()if!app.wait(for:.runningForeground,timeout:5){app.launch()}