是否有任何已知的方式来影响XCUITest调用测试方法的顺序?目前,调用哪个测试方法的顺序似乎完全是任意的。
这使得不可能定义特定的顺序。一般来说,Xcode管理XCUITest运行的方式是次优的,因为您必须为每个测试用例定义一个测试函数。最好只从一种方法启动完整的测试会话,这样就可以在会话中构建自己的测试:特性:场景。
..。这正是我所要做的,因为我们遵循的是卡拉巴斯风格的测试结构,而我围绕XCUITest编写的一个框架提供了许多额外的功能(比如测试轨集成)。
我试图以这样一种方式来实现这个框架:所有的特性和场景都是从一个test()方法中组织和启动的。如果Xcode允许的话,这是可行的,但是事实证明,在每个场景之间终止和启动应用程序是有问题的,因为它会导致主线程中断,甚至崩溃。因此,我向我们的框架添加了支持来实现它,这是一种旧的Xcode方式,它必须为每个测试定义一个方法,但是顺序被Xcode搞砸了,这会扰乱测试轨的日志和报告的生成。
发布于 2019-05-23 06:30:58
XCUITest按字母升序执行测试(除非是随机的)。您可以将测试方法命名为如下所示,以按所需的顺序运行
test01FirstCase() { //test code }
test02ThirdCaseButRunsSecond() { //test code }
test03SecondCaseButRunsThird() { //test code }
发布于 2019-06-21 07:49:07
如果您希望您的应用程序在每个测试方法之后不启动和终止,那么只需将XCUIApplication().launch()方法从安装方法中删除,并将其放在所有程序之上的第一个测试函数中,这就是app将只启动一次,而第二次测试执行将完全从第一个测试结束的点开始的方式。
如果您想要维护执行顺序,一种方法是定义以下任何一种顺序
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、forthTestMethod在函数声明中没有test关键字
https://stackoverflow.com/questions/46722227
复制相似问题