核心原则:任何没有经过自动测试的程序功能都可以当做不存在
单元测试框架的大三规则:
1.每个单元测试都必须独立于其他所有单元测试而运行
2.框架应该以单个测试为单元来检测和报告错误
3.应该易于定义要运行哪些单元测试
Junit框架的三大核心:测试类、测试集(Suite)、运行器(Runner)
运行器(Runner):
1.JUnit38:向后兼容3.8版本的runner
2.Junit4:版本4的runner
3.Parameterized:使用不同参数来运行相同的测试集
4.suiter:测试集,同时也是个运行器。所以说测试集本质也是个运行器
5.facade:以上模式的统一的接口,名字是:org.junit.runner.JUnitCore
测试集(Suite):suite可以包含多个其它suite
Assert<测试方法<测试类<Suite<Runner
测试类产生的测试对象(Test Object)是用来测试,你要测试的领域对象(Domain Object:被测试的对象),测试来来自于:包中的公共类或者测试用例中的内部类(实例化接口)
个人笔记:
1.eclipse允许在指定目录下运行所有的测试类和suite,因此可以考虑不用自己建suite(但还是有必要知道下概念)
2.runner一般是用来选择使用哪个的,在类的顶部通过@RunWith加载不同的runner来使用
最佳实践:
1.对还没有实现的测试代码抛出一个异常:throw new RuntimerException("implement me") P31
2.测试方法命名:使用testXXX[YYY]的形式,XXX是被测的方法,YYY是为同个方法添加其他测试时采用的测试说明 P33