【问题标题】:XCUITest Order of Test ExecutionXCUITest 测试执行顺序
【发布时间】:2018-03-25 03:16:06
【问题描述】:

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

这使得定义特定顺序成为不可能。一般来说,Xcode 管理 XCUITest 运行的方式是次优的,因为您必须为每个测试用例定义一个测试函数。最好只从一种方法启动一个完整的测试会话,这样人们就可以在例如会话:特性:场景中构建自己的测试。

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

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

【问题讨论】:

  • 据我所知,您无法定义或更改顺序。事实上,根据 Ash Furrow 的雷达,测试调用应该是随机的:openradar.me/radar?id=4937505996537856
  • 我认为我们不应该选择测试是否应该是随机的。无论如何,我认为以数字方式命名测试方法似乎总是按顺序执行它们,例如 test1、test2、test3 并且因为我们有自己的报告措施并且不关心 Xcode 报告命名对我们来说是可以的。
  • 但是你不应该期望这种行为永远存在。据我所知,这没有记录。就是现在的样子。

标签: ios xcode automated-tests xctest xcuitest


【解决方案1】:

XCUITest 按字母升序执行测试(除非是随机的)。您可以像下面这样命名测试方法以按照您想要的顺序运行

test01FirstCase() { //test code }

test02ThirdCaseButRunsSecond() { //test code }

test03SecondCaseButRunsThird() { //test code }

【讨论】:

    【解决方案2】:

    如果您希望您的应用程序在每个测试方法后都不会启动和终止,那么只需将 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 关键字

    【讨论】:

    • 如果所有的执行都是从单个方法开始的,那么一个方法的任何失败都将不允许执行以下方法。我还建议在setUp() 函数中启动应用程序。要在每次测试之前停止启动并使用下面的现有实例,可以使用func setUp() { let app = XCUIApplication() if !app.wait(for: .runningForeground, timeout: 5) { app.launch() } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2021-06-22
    • 1970-01-01
    • 2011-02-09
    • 2021-07-08
    • 2021-03-15
    • 1970-01-01
    相关资源
    最近更新 更多