如何在Selenium-Java Webdriver测试项目中指定Java类的执行顺序

时间:2013-07-07 06:11:21

标签: java selenium junit selenium-webdriver testng

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

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

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

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

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

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

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

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

但它没有用。我对Selenium和Java Webdriver没有多少经验。

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

提前完成。

4 个答案:

答案 0 :(得分:4)

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");
    }
}

答案 1 :(得分:1)

您可以使用JUnit测试套件:

import org.junit.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({Class1.class, Class2.class, Class3.class})
public class DropboxWorkflow {}

答案 2 :(得分:1)

除了Ittiel的帖子:

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

这样,您就不必使用测试名称来玩弄技巧。您只需按正确的顺序安排测试。

这对我来说很好。感谢Ittiel!

答案 3 :(得分:0)

试试这个

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

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