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){}
    }
}

曲線救國


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM