【问题标题】:How to specify order of execution of Java classes in a Selenium-Java Webdriver test project如何在 Selenium-Java Webdriver 测试项目中指定 Java 类的执行顺序
【发布时间】:2013-07-07 06:11:20
【问题描述】:

我必须为 Web 应用程序自动化测试套件,让用户连接并与他们的 Dropbox 帐户同步。我正在使用 Java Selenium Webdriver。

我在这里创建了这样的测试类。

Class1.java - 检查是否连接到 Internet 的测试用例。

Class2.java- 使用 Dropbox 登录的测试用例

Class3.java- 验证 Dropbox 文件夹是否显示在网页上的测试用例。

现在这些测试类应该按这个顺序执行。

但是当我将项目作为 JUnit 测试运行时,它会以其他顺序执行这些测试。我没有找到任何 XML 文件,因此我可以指定这些类的执行顺序。

我也尝试过 TestNG,因为我读到 Here TestNG 提供了一个属性“preserve-order”。

但它不起作用。我对 Selenium 和 Java Webdriver 没有太多经验。

所以任何帮助都会很明显。

提前感谢。

【问题讨论】:

    标签: java selenium junit selenium-webdriver testng


    【解决方案1】:

    Peter Niederwieser 是对的。

    此外,您可以设置在类中运行的测试顺序(Junit 4.11):

    import org.junit.runners.MethodSorters;
    
    import org.junit.FixMethodOrder;
    import org.junit.Test;
    @FixMethodOrder(MethodSorters.NAME_ASCENDING)
    public class SampleTest {
    
        @Test
        public void firstTest() {
            System.out.println("first");
        }
    
        @Test
        public void secondTest() {
            System.out.println("second");
        }
    }
    

    【讨论】:

    • 是的,这也可以使用。但是我只需要在课堂上编写一个测试用例。这就是我没有采用这种方法的原因。
    • 使用@FixMethodOrder(MethodSorters.NAME_ASCENDING) 来控制测试执行顺序的缺点是你必须使用你的测试名称(aaa_doThisbbb_doThat 等)。但是,应该可以编写一个方法分类器,允许对测试进行编号(例如,使用注释)。
    【解决方案2】:

    Ittiel 帖子的补充:

    而不是: @FixMethodOrder(MethodSorters.NAME_ASCENDING) 您可以使用: @FixMethodOrder(MethodSorters.JVM)

    这样,您就不必在测试名称上耍花招了。您只需按正确的顺序安排测试即可。

    这对我来说很好。感谢伊蒂尔!

    【讨论】:

      【解决方案3】:

      您可以使用 JUnit 测试套件:

      import org.junit.RunWith;
      import org.junit.runners.Suite;
      
      @RunWith(Suite.class)
      @Suite.SuiteClasses({Class1.class, Class2.class, Class3.class})
      public class DropboxWorkflow {}
      

      【讨论】:

      • 谢谢彼得。它完美地工作。现在我只需要运行这个 java 类,所有指定的 java 测试都按照 Suite.SuiteClasses 中指定的顺序运行。
      • 请教一个问题:如果我有几个测试套件,是否可以指定它们的执行顺序?
      【解决方案4】:

      试试这个

      @Test(dataProvider = "Login", priority = 1)
      public void login()
          {
           //code
          }
      
      @Test(dataProvider = "Search", priority = 2)
      public void search()
          {
           //code
          }
      

      【讨论】:

        猜你喜欢
        • 2020-10-20
        • 2013-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-04-24
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        相关资源
        最近更新 更多