JUnit 4.11在@After中获得测试结果
有没有办法可以在拆解( @After
)方法中获得测试结果? 我希望在测试后根据结果进行清理。
在junit docs中找不到关于@After
更多细节。
与您要求的最接近的可能是TestWatcher规则。 这不会让您访问返回的结果或任何内容,但您可以使用它(或创建您自己的TestRule并与Description对象结合使用,您可以不同地注释您的方法以指示需要进行哪种清理。
为什么不在类成员中设置测试结果,然后在@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 } }
我怀疑你不会有太多不同的结果,有限的设置就足够了。
如果没有标准的可能性(我很确定在JUnit 3.x中没有可能),你可以
写一个听众,
将Listener-events推送到静态Collection,
并从你的@ After-方法中收集它们。
是的,如果您使用TestNG,它是一个标准函数,您的@After方法可能如下所示:
@AfterTest public void cleanUp( ITestResult result ) { boolean success = result.isSuccess(); ....
我正在使用类似JamesB建议的东西。 您可能会到达必须为测试添加超时的点,然后= >>
“在类成员中设置测试结果然后在@After方法中对其进行操作”并不总是有效,如果你有超过1个断言。 这是我今天的问题,当我让testCaces超时时,但我的afterClass假设一切顺利,因为最近的断言已经通过..