问题标签 [devel-cover]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
78 浏览

perl - 为什么 Perl 的 Devel::Cover 认为有些分支和条件没有被覆盖?

我有这个函数,它接受一个数组,计算每个项目出现的频率,并返回一个唯一项目数组,首先按计数排序,然后按字母顺序排序,然后按字母顺序不区分大小写,这样运行之间的顺序就不会改变。

我有这个测试用例,一切正常:

我运行它并Devel::Cover用来收集测试覆盖率数字。我期望 100% 的覆盖率,但分支和条件覆盖率很短:

检查HTML报告,它显示一些分支和条件没有被覆盖:

分支覆盖

条件覆盖

我不明白为什么Devel::Cover认为某些分支和条件没有被涵盖。

它抱怨没有涵盖 TF 的分支,这将是<=>永远不真实的部分?我有两次'a'和'c',所以<=>当它比较'a'计数(2)和'b'计数(1)时,它应该返回零(F)和非零(T)。

对于条件覆盖,报告说,检查的两个部分都是错误的情况不包括在内。再说一次,我认为我应该把它包括在内,因为我有相同的数量和相同的名字。

我需要添加什么测试用例才能获得 100% 的分支和条件覆盖率?

或者,如果sort这样的函数对 来说很棘手Devel::Cover,我怎么能告诉它忽略这些?我将代码更改为

但这确实得到了相同的结果。

0 投票
2 回答
42 浏览

perl - 是否需要或如何在不是模块的 main.pl 上编写测试并使用 Perl Devel 封面运行它

有很多关于在模块上编写覆盖率的材料,但是如果我想为命令可运行的 perl 脚本(main.pl)编写测试怎么办?

是否需要为 main.pl 编写测试,或者我只需要为模块编写测试就可以了?

假设我有这两个脚本。

命令可运行脚本

主文件

===============================================

Perl 模块

光环.pm

===============================================

在命令行中运行:
perl main.pl