《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(3) https://developer.aliyun.com/article/1232113?groupCode=java
三、 无效单元测试
要想识别无效单元测试,就必须站在对方的角度思考——如何在保障单元测试覆盖率的前提下,能够更少地编写单元测试代码。那么,就必须从单元测试编写流程入手,看哪一阶段哪一方法可以偷工减料。
1. 单元测试覆盖率
在维基百科中是这样描述的:代码覆盖(Code Coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。
常用的单元测试覆盖率指标有:
• 行覆盖(Line Coverage)
用于度量被测代码中每一行执行语句是否都被测试到了。
• 分支覆盖(Branch Coverage)
用于度量被测代码中每一个代码分支是否都被测试到了。
• 条件覆盖(Condition Coverage)
用于度量被测代码的条件中每一个子表达式(true和false)是否都被测试到了。
• 路径覆盖(Path Coverage)
用于度量被测代码中的每一个代码分支组合是否都被测试到了。
除此之外,还有方法覆盖(Method Coverage)、类覆盖(Class Coverage)等单元测试覆盖率指标。
下面,用一个简单方法来分析各个单元测试覆盖率指标:
单元测试覆盖率,只能代表被测代码的类、方法、执行语句、代码分支、条件子表达式等是否被执行,但是并不能代表这些代码是否被正确地执行并返回了正确的结果。所以,只看单元测试覆盖率,而不看单元测试有效性,是没有任何意义的。
《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(5) https://developer.aliyun.com/article/1232111?groupCode=java