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

时间:2019-04-02 16:58:09

标签: java selenium selenium-webdriver junit

我正在使用junit通过Selenium Webdriver在网站上运行测试。我想要达到的目的是多次运行相同的测试类,但是每次我要更改网站的登录凭据时,可以使用不同的访问权限对其进行测试。我不知道如何解决这个问题。

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

testSuite类:

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

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

有什么方法可以做到这一点,还是应该以不同的方式来对待?谢谢。

1 个答案:

答案 0 :(得分:0)

我不太擅长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个派生类中执行的,但是它们继承了父类的所有测试方法。我可能会遗漏一些细节,但这是我的方法。

实际上,派生类中的beforeEach方法有所不同,但是我想上面的内容非常相似。