我正在使用带有Selenium WebDriver的TestNG,我使用的框架有一个基类,它有BeforeClass方法,所有Suite类都从这个基类扩展,并覆盖了所示的BeforeClass方法。
public BaseClass{
@BeforeClass
public void preConditions{
//primary actions like opening browser and setting preferences
}
}
public TestSuiteClass extends BaseClass{
@BeforeClass
@Override
public void preConditions(){
super.preCnditions();
//specific preconditions required by test suite
}
}
我遇到的问题是,如果被覆盖的方法因任何原因失败,则会跳过所有测试套件/案例并停止整个测试执行。 如何阻止这种情况发生?
答案 0 :(得分:1)
如果某些内容在@Before ...注释过程中失败,则会跳过测试而不是失败,因为问题不在于您的测试用例,而在于它们之前的过程。所以看起来你的车不能在断桥上过河,但这不是你车的故障。
如果你真的想对它进行一些黑客攻击,你可以找到ideas here!
答案 1 :(得分:0)
您可以找到解决此问题的方法,但您需要考虑是否真的想要这样做。使用@BeforeClass
注释的方法的想法是为测试设置相关数据(您甚至称之为preConditions
)。如果失败,测试无论如何都不会通过。
一种方法是删除@BeforeClass
注释并从测试本身调用方法
public TestSuiteClass etends BaseClass {
public void customPreConditions() {
super.preCnditions();
}
@Test
publuc void someTest() {
customPreConditions();
// do the test
}
}
即使customPreConditions()
不成功,测试仍将继续。