了解 JUnit 核心类、接口及生命周期(2)

来源:developerWorks 中国 作者:曾 军
  

catch (AssertionFailedError e) { 
    addFailure(test, e); 
} 
catch (ThreadDeath e) { // don't catch ThreadDeath by accident 
    throw e; 
} 
catch (Throwable e) { 
    ddError(test, e);
}





TestListener

前面提到 result 加上了一个 ResultPrinter,ResultPrinter 会记录运行中的所有 Exception,并且实时地以不同的格式输出。当所有的 Test 都运行完毕后,ResultPrinter 会对 result 进行分析,首先输出运行的时间,接着 printError() 输出 fErrors 的个数,printFailures() 则输出 fFailures 的个数。PrintFooter() 根据 result.wasSuccessful(),如果成功,则打印 OK 和 test 运行的总次数,如果失败,则打印出 test 总的运行的个数,失败和错误的个数。


参数一的统计输出结果:
				
Time: 0.016 
There was 1 failure: 
1) testPay(TestShoppingCart)junit.framework.AssertionFailedError: 
expected:<30> but FAILURES!!! 
Tests run: 2,  Failures: 1,  Errors: 0 


清单一:
				
synchronized void print(TestResult result, long runTime) { 
    printHeader(runTime); 
    printErrors(result); 
    printFailures(result); 
    printFooter(result); 
} 


清单二:
				
protected void printFooter(TestResult result) { 
    if (result.wasSuccessful()) { 
        getWriter().println(); 
        getWriter().print("OK"); 
        getWriter().println (" (" + result.runCount() + " test" 
            + (result.runCount() == 1 ? "": "s") + ")"); 

    } else { 
        getWriter().println(); 
        getWriter().println("FAILURES!!!"); 
        getWriter().println("Tests run: "+result.runCount()+ 
            ",  Failures: "+result.failureCount()+ 
            ",  Errors: "+result.errorCount()); 
    } 
    getWriter().println(); 
} 





完整生命周期

整个生命周期将在下图显示:


图 1. Junit 完整生命周期
图 1. Junit 完整生命周期




总结

通过上面的介绍,本文深入地讲解了 JUnit 的核心类和接口,TestCase 的完整生命周期。掌握了这些,开发者有了更加灵活的自用度,可以根据自己特定的项目的特性,定制最合适自身的 MyTestRunner,MyTestResult,MyTestSuite,MyTestListener。从而提高工作效率,发挥 JUnit 的最大作用。(责任编辑:A6)


时间:2009-08-10 09:30 来源:developerWorks 中国 作者:曾 军 原文链接

好文,顶一下
(1)
100%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量