Junit 多线程测试

2019-08-26 06:22:06来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Junit 多线程测试

Junit不能用来做多线程测试,因为Junit不支持多线程

Junit的TestRunner的main方法源码

    public static void main(String args[]) {
        TestRunner aTestRunner = new TestRunner();
        try {
            TestResult r = aTestRunner.start(args);
            if (!r.wasSuccessful()) {
                System.exit(FAILURE_EXIT);
            }
            System.exit(SUCCESS_EXIT);
        } catch (Exception e) {
            System.err.println(e.getMessage());
            System.exit(EXCEPTION_EXIT);
        }
    }

从源码可以看出来,Junit是监控的main线程,一旦main线程执行结束就直接exit了,根本不管子线程的死活。

知道了Junit的原理,我觉得可以尝试实现一下支持多线程,不就是让main线程不要退出嘛,简单。

public class MyTest {
    private static final int LEN = 20;
    //存储线程数量Active Thread Count
    private static final int ATC = Thread.activeCount();
    @Test
    public void testCase(){
        List<String> list = new ArrayList<>();
        for(int i = 0;i<LEN;i++){
            new Thread(() -> {
                System.out.println(Thread.currentThread().getName());
            },"T"+String.valueOf(i)).start();
        }
        //只要线程数量比ATC多就说明,自己创建的线程还有没执行完的。
        while(Thread.activeCount() > ATC){}
    }
}

曲线救国


原文链接:https://www.cnblogs.com/macho8080/p/11393847.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:springboot工程启动即执行一段代码

下一篇:Java面向对象特性总结