zoukankan      html  css  js  c++  java
  • Usage and Idioms——Timeout for tests

    如果测试用例运行时不受控制或者运行时间过长,就将其自动判定为运行失败。实现这个功能,有以下2种选择:

    在@Test注释的括号中添加timeout 参数(适用测试方法)

    你可以随意指定一个毫秒级别的时长,如果测试用例运行后超过这个时长,则抛出的 Exception 会触发失败,从而判定测试用例执行失败。用法如下:

    @Test(timeout=1000)

    public void testWithTimeout() {

    ...

    }

    这种方法是靠在单独的线程中运行该测试用例实现的,如果用例运行的时长超过设置时长,用例会执行失败同时JUnit会中断该线程; 如果测试在执行可中断操作时超时,则该线程自动退出;如果测试用例是无限循环,则该线程会一直运行该用例,同时其他用例继续执行。

    Timeout 规则 (适用于测试类中的所有测试方法)

    Timeout 规则适用测试类中的所有测试方法的超时测试,除了在单个@Test注释中指定的timeout会执行外,Timeout规则一般也会执行。

    import org.junit.Rule;
    import org.junit.Test;
    import org.junit.rules.Timeout;
    
    public class HasGlobalTimeout {
        public static String log;
        private final CountDownLatch latch = new CountDownLatch(1);
    
        @Rule
        public Timeout globalTimeout = Timeout.seconds(10); // 10 seconds max per method tested
    
        @Test
        public void testSleepForTooLong() throws Exception {
            log += "ran1";
            TimeUnit.SECONDS.sleep(100); // sleep for 100 seconds
        }
    
        @Test
        public void testBlockForever() throws Exception {
            log += "ran2";
            latch.await(); // will block 
        }
    }


    Timeout rule中定义的timeout 适用于整个测试,包括@Before 或者 @After.如果某个测试方法会无限循环下去,则 @After不会被触发。
  • 相关阅读:
    CART回归树基本原理(具体例子)
    Leetcode 236. 二叉树的最近公共祖先 & 235. 二叉搜索树的最近公共祖先(Python3)
    c和c++的区别
    最小编辑距离python
    判断单链表是否有环,并找出环的入口python
    关键词提取算法-TextRank
    leetcode406 ,131,1091 python
    id3算法python实现
    Relu激活函数的优点
    从 AllocateMessageQueueConsistentHash 看一致性哈希
  • 原文地址:https://www.cnblogs.com/insist8089/p/6401249.html
Copyright © 2011-2022 走看看