JUnit4测试超时详解

后端 潘老师 6个月前 (10-24) 130 ℃ (0) 扫码查看

学习编写JUnit测试用例,并具有超时行为。如果测试未在给定的时间限制内完成执行,则将强制停止其执行,并将测试标记为失败。

1.为什么测试需要设置超时?

我们可能需要测试应用程序在外部系统在给定时间内没有响应时的故障安全行为。

因此,当我们模拟外部依赖项时,最好使用与超时相关的测试。

这也被认为是JUnit的最佳实践。

如何调用超时?

我们知道每个测试都在一个新线程中运行。如果在测试完成之前指定的超时时间已过,则通过Thread.interrupt()中断其执行。

2. JUnit测试超时示例

要为某个测试用例指定超时时间,请在@Test注释上提及“timeout”属性。

请注意,超时时间以毫秒为单位。

@Test(timeout = 500)
public void testTimeoutOne() throws InterruptedException 
{
    TimeUnit.SECONDS.sleep(1);
}

在上面的测试中,执行将在500ms后超时,并显示以下消息。

java.lang.Exception: test timed out after 500 milliseconds

3.全局超时的规则

除了为所有测试分别指定超时属性外,我们还可以为类中的所有测试定义JUnit规则。

public class TimeoutTests {
    @Rule
    public Timeout globalTimeout = Timeout.seconds(2);

    @Test     
    public void testTimeoutOne() throws InterruptedException          //PASS
    {
        TimeUnit.SECONDS.sleep(1);
    }

    @Test     
    public void testTimeoutTwo() throws InterruptedException        //FAIL
    {
        TimeUnit.SECONDS.sleep(3);
    }
}

在上面的示例中,第一个测试将通过,而第二个测试将失败。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10340.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】