JUnit是一个框架,能帮助程序员做好单元测试。
JUnit由7个核心类及接口: Class: Assert TestResult TestCase TestSuite BaseTestRunner , Interface: Test TestListener .
BaseTestRunner 主要用于启动测试的用户界面.一般不需要自己写TestRunner,框架自己带的就可以了。
TestSuite,当需要测试一组TestCase时就需要用到TestSuite,它可以把许多的TestCase一起测试,它会自动扫描你的测试类。在没有自己提供TestSuite里,test runner会自动创建一个。用户很多时候还是应该创建TestSuite,TestSuite里面可以加TestCase,也可以加上TestSuite,所以可以选择只执行一部分的测试。这其中用到了Composite,Command模式。
TestResult 用来收集TestCase的执行结果,TestRunner根据它的结果来报告测试结果。当有TestFailure时,进度条为红色,没有时为绿色。
TestListener 用来帮助对象访问TestResult并创建有用报告的, TestRunner 实现了TestListener 。
TestCase 包括两个主要部件:fixture 和单元测试。通过fixture来管理资源,在setUp方法里面创建资源,在tearDown里面销毁资源。 在setUp里面创建的资源可以在多个test方法里面用。
Assert 是TestCase的辅助类,主要用于测试 主要有8个核心方法:assertTrue assertFalse assertEquals assertNotNull assertNull assertSame assertNotSame fail。
JUnit的生命周期:很创建TestSuite,然后再创建TestRusult,最后执行测试方法。 TestSuite TestResult 都是由BaseTestRunner创建的。 创建TestResult 时,先产生一个TestResult 然后向TestRunner上通过addListener注册,再关联其它的资源,当这一切就绪后向TestRunner返回一个startTest方法,接着运行测试。 测试时首先运行runBare方法,然后是TestCase运行setUp testXXX tearDown 方法,完了后向TestRunner返回测试结果。
测试的准则:a. 每个单元测试都必须独立于其它的单元测试而运行 b. 必须以单项测试为单位进行测试和报告错误 c. 必须易于定义要运行哪些单元测试