《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(2) https://developer.aliyun.com/article/1232114?groupCode=java
2. FIRST原则
FIRST原则内容如下:
• F-Fast(快速的)
单元测试应该是可以快速运行的,在各种测试方法中,单元测试的运行速度是最快的,大型项目的单元测试通常应该在几分钟内运行完毕。
• I-Independent(独立的)
单元测试应该是可以独立运行的,单元测试用例互相之间无依赖,且对外部资源也无任何依赖。
• R-Repeatable(可重复的)
单元测试应该可以稳定重复的运行,并且每次运行的结果都是稳定可靠的。
• S-SelfValidating(自我验证的)
单元测试应该是用例自动进行验证的,不能依赖人工验证。
• T-Timely(及时的)
单元测试必须及时进行编写,更新和维护,以保证用例可以随着业务代码的变化动态的保障质量。
3. ASCII原则
阿里的夕华先生也提出了一条ASCII原则:
• Automatic(自动的)
单元测试应该是全自动执行的,并且非交互式的。
• S-SelfValidating(自我验证的)
单元测试中必须使用断言方式来进行正确性验证,而不能根据输出进行人肉验证。
• C-Consistent(一致的)
单元测试的参数和结果是确定且一致的。
• I-Independent(独立的)
单元测试之间不能互相调用,也不能依赖执行的先后次序。
• I-Isolated(隔离的)
单元测试需要是隔离的,不要依赖外部资源。
4. 对比集测和单测
根据上节中的单元测试原则,我们可以对比集成测试和单元测试的满足情况如下:
通过上面表格的对比,可以得出以下结论:
• 集成测试基本上不一定满足所有单元测试原则;
• 单元测试基本上一定都满足所有单元测试原则。
所以,根据这些单元测试原则,可以看出集成测试具有很大的不确定性,不能也不可能完全代替单元测试。另外,集成测试始终是集成测试,即便用于代替单元测试也还是集成测试,比如:利用H2内存数据库测试DAO方法。
《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(4) https://developer.aliyun.com/article/1232112?groupCode=java