提问者:小点点

如何使用不同的WebDriver配置多次运行junit测试套件


我使用junit运行测试网站与Selenium网络驱动程序.我试图实现的是运行相同的测试类多次,但每次我想改变我的登录凭证的网站,所以它可以测试不同的访问权限.我不知道如何处理这个问题。

我正在使用TestSuite类来指定应该运行哪些测试类,并且WebDriver正在TestRunner类中初始化

测试套件类:

@RunWith(Suite.class)

@Suite.SuiteClasses({
        DhcpReservationTest.class,
})

public class TestSuite {
}

TestRunner类:

public class TestRunner {
    /**
     * Init web driver
     */
    private static WebDriver driver = DriverManager.createDriver(ProjectSettings.Roles.NETADMIN);

    /**
     * This static method serves for getting instance of web driver for executing tests.
     * @return web driver
     */
    public static WebDriver getWebDriver() {
        return driver;
    }

    static JUnitCore junitCore;
    static Class<?> testClasses;
    public static void main(String[] args) {
  System.out.println("Running Junit Test Suite.");

        junitCore = new JUnitCore();

        junitCore.addListener(new CustomExecutionListener());

        Result result = junitCore.run(TestSuite.class);
        for (Failure failure : result.getFailures()) {
            System.out.println(failure.toString());
        }
        System.out.println("Successful: " + result.wasSuccessful() + " ran " + result.getRunCount() + " tests");
    }
}

目标是在初始化网络驱动程序时将TestRunner中的权限角色从“NETADMIN”更改为例如“SYSADMIN”等。每次测试完成并再次运行相同的测试套件。

有什么方法可以做到吗?或者我应该以不同的方式处理这个问题吗?谢谢你。


共1个答案

匿名用户

我不擅长Java,但我在C#和NUnit中做过类似的事情。我在父类中拥有所有的测试方法。并且有多个派生类,它们实现了保持差异的方法。

所以你有这样的东西(伪代码):

parentClass{
  [Test]
  testMethod1(){
    login();
    //test things
  }
  [Test]
  testMethod2(){
    login();
    //test other things
  }   
}
[TestSuite]
subclass1()<<parentClass{
  login(){
    //do first type of login
  }
}
subclass2()<<parentClass{
  login(){
    //do second type of login
  }
}

所以测试是在2个派生类中执行的,但是它们继承了父类的所有测试方法。我可能会错过一些细节,但这是我的方法。

实际上,我在派生类中的方法有不同之处,但我想上面的方法会非常相似。