在不同的浏览器中运行测试

时间:2014-03-11 17:13:02

标签: java selenium-webdriver junit4

我在3个不同的类中定义了3个测试

第1类 @Test 1

第2类 @Test 2

第3类 @Test 3

我创建了另一个类'类浏览器',我正在创建不同的浏览器驱动程序

现在我想打电话给@ Test1,2& 3来自浏览器类,以便这些测试在不同的浏览器中执行

以下是正确的做法吗?

Class Browsers
{

public static Class1 A =new Class1()
public static Class2 B =new Class2()
public static Class3 C =new Class3()

@Test
public void createCromeDriver(){

A.Test1
B.Test2
C.Test3
}

@Test
public void createIEDriver(){
A.Test1
B.Test2
C.Test3
}

}

(在上面的场景中,我将属于其他类的测试调用到另一个具有自己测试的类中。)

1 个答案:

答案 0 :(得分:0)

虽然这确实运行了所有测试,但它假设您只想知道每个驱动程序的一个测试失败。如果所有三个IE测试都失败了,您是否想要三次失败,以便一次性知道这一切?我愿意。

要解决这个问题,请使用Parameterized JUnit Test。这可以让你编写这样的代码。 JUnit将使用每个参数调用每个测试。在我的示例中,它使用IE浏览器运行两个测试。您可以根据需要向browsers()方法添加任意数量的驱动程序,让它为每个浏览器调用两个测试。

@RunWith(Parameterized.class)
public class Browsers {
    private WebDriver driver;

    public Browsers(WebDriver _driver) {
        driver = _driver;
    }

    @Parameters
    public static Collection<WebDriver[]> browsers() {
        List<WebDriver[]> list = new ArrayList<WebDriver[]>();
        list.add(new WebDriver[] { new InternetExplorerDriver() });
        return list;
    }

    @Test
    public void test1() {
       A.test1(driver);
    }

    @Test
    public void test2() {
      B.test2(driver);
    }

}
相关问题