繁体   English   中英

Junit4 - 测试超时清理

[英]Junit4 - Cleanup on test timeout

当我使用注释@Test(timeout = 3000)运行测试并且超时时,它会立即终止测试并且不会调用使用@After注释的tearDown方法。

在这种情况下清理的方法是什么?

编辑:我的测试是通过线路使用jax-rs调用资源端点,测试在http请求中间超时。 这是我相当确定@After没有被调用的情况

严格来说,它并没有扼杀测试,它失败了。 这显然意味着使用@After注释的方法将运行。

下面的代码对我来说就像魅力一样。

@Test(timeout=1)
public void testTimeout() {
    try {
        Thread.sleep(10);
    } catch (InterruptedException ex) {}
}

@After
public void after() {
    System.out.println("@After is invoked, indeed.");
}

输出是,

Testsuite: javaapplication1.MainTest
After is invoked, indeed.
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.054 sec

我也遇到了一些超时属性问题。 也许这可以帮助你找到四个问题......

在我的情况下,混淆是由于使用@Test(timeout = ...)注释的方法中的测试代码在单独的线程中运行。 因此,在测试期间访问的一些ThreadLocal内容无法在@After方法中清除。

@Rule  
public Timeout to = new Timeout(300000);

这适用于JUnit 4.7。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM