我正在使用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”等。
有什么方法可以做到这一点,还是应该以不同的方式来对待?谢谢。
答案 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方法有所不同,但是我想上面的内容非常相似。