1

我想在测试失败时得到通知。理想情况下,我想知道在我的 @After 注释方法中测试是通过还是失败。我知道他们是一个可以用于此目的的 RunListener,但它只有在我们使用 JunitCore 运行测试时才有效。如果测试用例失败或类似于 RunListener 的东西可以与 SpringJUnit4ClassRunner 一起使用,有没有办法得到通知?

4

2 回答 2

5

Spring TestContext Framework 提供了一个TestExecutionListenerSPI 可以用来实现这一点。

基本上,如果您实现TestExecutionListener(或者更好的是 extend AbstractTestExecutionListener),您可以实现该afterTestMethod(TestContext)方法。从TestContext传入的那个你可以访问抛出的异常(如果有的话)。

这是Javadoc org.springframework.test.context.TestContext.getTestException()

获取测试方法执行期间抛出的异常。

注意:这是一个可变属性。

返回: 抛出的异常,如果没有抛出异常,则返回 null

@TestExecutionListeners仅供参考:您可以通过注释注册您的客户听众。

问候,

山姆

于 2014-02-06T21:28:56.733 回答
0

另一种选择是 JUnits 内置TestWatcher规则。

该规则允许您选择要通知的内容。这是来自JUnit Github Docs的压缩示例

@Test 
public class WatcherTest {

  @Rule
  public final TestRule watcher = new TestWatcher() {

    @Override
    protected void failed(Throwable e, Description) {}

    // More overrides exists for starting, finished, succeeded etc
  };

  @Test
  public void test() {}
}
于 2017-02-27T01:05:14.150 回答