在软件构造实验2中,需要进行代码覆盖率的测试,在eclipse中可以通过安装eclemma这一工具。

首先在help中找到eclipse marketspace

然后可以搜索eclemma

java怎么查看单元测试覆盖率 eclipse单元测试覆盖率_java怎么查看单元测试覆盖率

 

 点击右下角的安装即可。

 

使用coverage as后,可以发现代码会被不同颜色标记。

红色表示未被执行

绿色表示被执行

黄色代表部分被执行

 

代码覆盖率的要求有多种标准


语句覆盖:又称行覆盖(LineCoverage),段覆盖(SegmentCoverage),基本块覆盖(BasicBlockCoverage),这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。选择足够多的测试数据,使被测程序中每条语句至少执行一次。语句覆盖是很弱的逻辑覆盖,它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。测试效果不明显,很难更多地发现代码中的问题。

判定覆盖:又称分支覆盖(BranchCoverage),所有边界覆盖(All-EdgesCoverage),基本路径覆盖(BasicPathCoverage),判定路径覆盖(Decision-Decision-Path)。 比语句覆盖稍强的覆盖标准,它度量程序中每一个判定的分支是否都被测试到了。设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。

条件覆盖:度量判定中的每个子表达式结果true和false是否被测试到了。在设计程序中,一个判定语句是由多个条件组合而成的复合判定。为了更彻底地实现逻辑覆盖,可以采用条件覆盖(Condition Coverage)的标准。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。条件覆盖与判定覆盖非常容易混淆,条件覆盖不是将判定中的每个条件表达式的结果进行排列组合,而是只要每个条件表达式的结果true和false测试到了就OK了。因此,我们可以这样推论:完全的条件覆盖并不能保证完全的判定覆盖。

条件判定组合覆盖:多条件覆盖多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。

路径覆盖:又称断言覆盖(PredicateCoverage)。它度量了是否函数的每一个分支都被执行了。 就是所有可能的分支都执行一遍,有多个分支嵌套时,需要对多个分支进行排列组合,可想而知,测试路径随着分支的数量指数级别增加。路径覆盖被很多人认为是“最强的覆盖”。

 

根据代码被标记的颜色,可以找出为被覆盖的代码,针对这些代码添加测试用例,提高代码的覆盖率。