JUnit –超时测试

如果测试花费的时间超过定义的“超时”,则将抛出TestTimedOutException并将测试标记为失败。 请参见以下示例:

PS已通过JUnit 4.12测试

1.超时示例

timeout示例仅适用于单个测试方法。 超时值以毫秒为单位。

TimeoutTest.java
package com.mkyong;

import org.junit.Test;

public class TimeoutTest {

    //This test will always failed :)
    @Test(timeout = 1000)
    public void infinity() {
        while (true) ;
    }

    //This test can't run more than 5 seconds, else failed
    @Test(timeout = 5000)
    public void testSlowMethod() {
        //...
    }

}

超时测试对于测试方法性能很有用。

2.全局超时规则示例

本示例说明如何创建全局超时规则,该规则将应用于类中的所有测试方法。

TimeoutTest.java
package com.mkyong;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.Timeout;

import java.util.concurrent.TimeUnit;

public class TimeoutRuleTest {

    //global timeout rule
    @Rule
    public Timeout globalTimeout = Timeout.seconds(1);

	//This test will be failed, because it will take more than 1 second to finish!
    @Test
    public void testSlowMethod1() throws InterruptedException {
        //...
        TimeUnit.SECONDS.sleep(5000);
    }

	//passed
    @Test
    public void testSlowMethod2() {
        //...
    }

}

在上面的示例中,声明了全局Timeout规则, testSlowMethod1()testSlowMethod2()必须在1秒内完成测试,否则测试将失败。

PS该规则也适用于@Before@After方法。

注意
所有单元测试都应该是快速的,并且此全局超时规则应该是您的最佳帮助。

参考文献

  1. @Test JavaDoc
  2. 超时规则JavaDoc

翻译自: https://mkyong.com/unittest/junit-4-tutorial-4-time-test/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值