* MTTR創(chuàng)建以后,調(diào)用runTestRunnables()方法來運(yùn)行它
	     */
	    public void testExampleThread()
	        throws Throwable {
	        //實(shí)例化 TestRunnable 類
	        TestRunnable tr1, tr2, tr3;
	        tr1 = new DelayedHello("1");
	        tr2 = new DelayedHello("2");
	        tr3 = new DelayedHello("3");
	        //把實(shí)例傳遞給 MTTR
	        TestRunnable[] trs = {tr1, tr2, tr3};
	        MultiThreadedTestRunner mttr =
	            new MultiThreadedTestRunner(trs);
	        //執(zhí)行MTTR和線程
	        mttr.runTestRunnables();
	    }
	    /**
	     * 標(biāo)準(zhǔn)的 main() 和 suite() 方法
	     */
	    public static void main (String[] args) {
	        String[] name =
	            { ExampleTest.class.getName() };
	        junit.textui.TestRunner.main(name);
	    }
	    public static Test suite() {
	        return new TestSuite(ExampleTest.class);
	    }
	}
	上面的例子中,每個(gè)線程將會(huì)在你發(fā)出測(cè)試指令后,在2到5秒之間向你返回它們的輸出,它們不僅按時(shí)間顯示,而且是以一個(gè)隨機(jī)的順序來顯示。這個(gè)單元測(cè)試只有所有的線程都執(zhí)行完成后才會(huì)結(jié)束。由于外加了MultiThreadedTestRunner,所以Junit繼續(xù)執(zhí)行測(cè)試用例之前,必須耐心的等待TestRunnables執(zhí)行完成它們的工作,做為可選項(xiàng),你可以為MultiThreadedTestRunner的執(zhí)行分配大的執(zhí)行時(shí)間(這樣以便你脫離線程,而不掛起測(cè)試)。
	要編譯運(yùn)行ExampleTest,你必須在你的CLASSPATH環(huán)境變量中指定junit.jar和GroboUtils-2-core.jar兩個(gè)類庫的位置。這樣你會(huì)看到每人線程以隨機(jī)的順序來輸出 “Delayed Hedllo World”
	結(jié)束語
	寫一個(gè)多線程的單元測(cè)試不用感到苦腦,GroboUtils類庫為編寫多線程的單元測(cè)試提供了一個(gè)清晰簡(jiǎn)單的API接口,通過把這個(gè)類庫添加到你的工具包中,你可以把單元測(cè)試擴(kuò)展到模擬繁重的WEB網(wǎng)絡(luò)通訊和并發(fā)的數(shù)據(jù)庫處理,以及對(duì)你的同步方法進(jìn)行壓力測(cè)試。