我有一个用于测试回归测试的两个类。在某些情况下,我们在类和方法中有多个测试方法,我们通常使用断言。我想知道是否有任何方法可用,只能使用@Rule
测试方法中的最后一个方法。这是我的代码:
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class JustOneClass extends ParentClass {
@Rule
public class GeneralRule articleHotspotRule = new class GeneralRule (this);
@Test
aMethod(){
Assert.assertTrue()
}
@Test
bMethod(){
Assert.assertTrue()
}
@Test
cMethod(){
Assert.assertTrue()
}
@Test
dMethod(){
if this assert is failed Assert.assertTrue()
}
}
我们有另一个扩展TestWatcher
public class GeneralRule extends TestWatcher {
private ParentClass baseTest;
public GeneralRule (final GeneralRule generalRule) {
this.baseTest = generalRule;
}
@Override
protected void failed(final Throwable e, final Description description) {
baseTest.after();
}
}
在这种情况下,我希望只有在baseTest.after()
的断言失败时才会使用dMedthod
。
答案 0 :(得分:1)
而不是使用规则来尝试检查失败,如何检查失败条件然后以编程方式使测试失败?当然不是一般的优雅或可重复使用,但可能满足您的要求。
@Test
public void dMethod() {
...
if(actual == false) { // check for failure scenario
after(); // call the after method
Assert.fail("hello failure"); // programatically fail the test
}
}