在本地使用GroboUtils進行多執行緒測試
阿新 • • 發佈:2019-02-01
在本地開發的時候有時候需要用到多執行緒去測試某些類或者方法是否有執行緒安全問題,由於本地開發機器硬體限制通過硬編碼的方式往往難以達到多個執行緒同時訪問的效果,這時可以考慮使用GroboUtils達到目的。順便提一句,使用Junit是不行的,去看原始碼會發現junit是System.exit退出用例執行的,主執行緒終止jvm都停了,其他執行緒肯定執行不了了。
使用GroboUtils可以去下載它的jar包,官網連結點選開啟連結,或者使用maven依賴:
<dependency> <groupId>net.sourceforge.groboutils</groupId> <artifactId>groboutils-core</artifactId> <version>5</version> </dependency>
repository是 https://oss.sonatype.org/content/repositories/opensymphony-releases,然後就可以使用它進行測試了。程式碼很簡單:
@Test public void testThreadJunit() throws Throwable { //Runner陣列,相當於併發多少個。 TestRunnable[] trs = new TestRunnable [10]; for(int i=0;i<10;i++){ trs[i]=new ThreadA(); } // 用於執行多執行緒測試用例的Runner,將前面定義的單個Runner組成的陣列傳入 MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs); // 開發併發執行數組裡定義的內容 mttr.runTestRunnables(); } private class ThreadA extends TestRunnable { @Override public void runTest() throws Throwable { // 測試內容 myCommMethod2(); } } public void myCommMethod2() throws Exception { System.out.println("===" + Thread.currentThread().getId() + "begin to execute myCommMethod2"); }