有没有办法可以在拆解(@After
)方法中获得测试结果?我希望在测试后根据结果进行清理。
在junit docs中找不到关于@After
的更多详细信息。
答案 0 :(得分:3)
与您要求的最接近的可能是TestWatcher规则。这不会让您访问返回的结果或任何内容,但您可以使用它(或创建您自己的TestRule并与Description对象结合使用,您可以不同地注释您的方法以指示清除什么类型的方法是必要的。
答案 1 :(得分:1)
为什么不在类成员中设置测试结果,然后在@After方法中对其进行操作?
public enum TestResult {
...
}
public class TestClass {
private TestResult result;
...
@Test
public void aTest() {
// set up test
// call class under test
// assert something and set result based upon outcome
this.result = ...;
}
...
@After
public void teardown() {
// clean up based upon this.result
}
}
我怀疑你不会有太多不同的结果,有限的设置就足够了。
答案 2 :(得分:0)
如果没有标准的可能性(我很确定在JUnit 3.x中没有可能),你可以
写一个听众,
将Listener-events推送到静态Collection
并从@ After- Method中收集它们。
答案 3 :(得分:0)
是的,如果您使用TestNG,它是一个标准函数,您的@After方法可能如下所示:
@AfterTest
public void cleanUp( ITestResult result ) {
boolean success = result.isSuccess();
....
答案 4 :(得分:0)
我正在使用JamesB建议的相似内容。您可能会到达必须为测试添加超时的点,然后=>>>
"在类成员中设置测试结果,然后在@After方法中对其进行操作"如果你有超过1个断言,它将永远不会工作。这是我今天的问题,当我让testCaces超时时,但我的afterClass假设一切顺利,因为最近的断言已经过去了..