【问题标题】:How to run/execute methods sequentially by Selenium RC and TestNG using Java如何使用 Java 通过 Selenium RC 和 TestNG 顺序运行/执行方法
【发布时间】:2011-03-23 07:43:18
【问题描述】:

我有一个包含 3 个方法的 java 类:

public class Test{
 public void orange(){
 }
 public void apple(){
 }
 public void mango(){
 }
}

我想按 Selenium RC 和 TestNG 编写的顺序/有序地执行上述 3 种方法。我该怎么做?

【问题讨论】:

    标签: java selenium testng selenium-rc sequential


    【解决方案1】:

    简单的方法是将@Test 更改为@Test(singleThreaded=true)。如果这样做,您班级中的所有测试都将在单个线程中按顺序运行。

    或者

    如果你想明确测试应该运行的顺序,你可以使用注解@dependsOnMethods

    public void orange(){}
    
    @Test(dependsOnMethods = { "orange" })
    public void apple(){}
    
    @Test(dependsOnMethods = { "apple" })
    public void mango(){}
    

    如果您希望类中的一些(但不是全部)方法按顺序运行,这也很好。

    http://testng.org/doc/documentation-main.html#dependent-methods

    【讨论】:

    • 依赖是要走的路。另请注意,最新版本的 TestNG 支持名为“preserve-order”的 XML 属性,这将保证您的类和方法以与 testng.xml 文件中相同的顺序执行。
    • 是的,TestNG 的“保留顺序”运行良好。我还使用了“@dependsOnMethods”
    【解决方案2】:

    只需将 @Test 更改为 @Test(singleThreaded=true) 即可。

    http://testng.org/javadoc/org/testng/annotations/Test.html#singleThreaded%28%29

    【讨论】:

      【解决方案3】:

      在您的测试类中,您可以在类级别本身尝试此注释。

      @Test(sequential = true)
      

      【讨论】:

        【解决方案4】:

        我建议使用dependOnGroups。因此,您将您的测试方法作为一组并提供对该组的依赖。所以明天如果你重构你的方法名,你的依赖结构就不会被破坏。有关dependsOnGroups 的更多信息,请查看here

        【讨论】:

          【解决方案5】:

          除了在类上使用sequential=true,还可以对方法本身设置优先级。

          @Test(priority=1)
          public void orange(){}
          
          @Test(priority=2)
          public void apple(){}
          
          @Test(priority=3)
          public void mango(){}
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-11-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多