我使用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”等。每次测试完成并再次运行相同的测试套件。
有什么方法可以做到吗?或者我应该以不同的方式处理这个问题吗?谢谢你。
我不擅长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个派生类中执行的,但是它们继承了父类的所有测试方法。我可能会错过一些细节,但这是我的方法。
实际上,我在派生类中的方法有不同之处,但我想上面的方法会非常相似。