问题标签 [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.
perl - 为什么 Perl 的 Devel::Cover 认为有些分支和条件没有被覆盖?
我有这个函数,它接受一个数组,计算每个项目出现的频率,并返回一个唯一项目数组,首先按计数排序,然后按字母顺序排序,然后按字母顺序不区分大小写,这样运行之间的顺序就不会改变。
我有这个测试用例,一切正常:
我运行它并Devel::Cover
用来收集测试覆盖率数字。我期望 100% 的覆盖率,但分支和条件覆盖率很短:
检查HTML报告,它显示一些分支和条件没有被覆盖:
我不明白为什么Devel::Cover
认为某些分支和条件没有被涵盖。
它抱怨没有涵盖 TF 的分支,这将是<=>
永远不真实的部分?我有两次'a'和'c',所以<=>
当它比较'a'计数(2)和'b'计数(1)时,它应该返回零(F)和非零(T)。
对于条件覆盖,报告说,检查的两个部分都是错误的情况不包括在内。再说一次,我认为我应该把它包括在内,因为我有相同的数量和相同的名字。
我需要添加什么测试用例才能获得 100% 的分支和条件覆盖率?
或者,如果sort
这样的函数对 来说很棘手Devel::Cover
,我怎么能告诉它忽略这些?我将代码更改为
但这确实得到了相同的结果。
perl - 是否需要或如何在不是模块的 main.pl 上编写测试并使用 Perl Devel 封面运行它
有很多关于在模块上编写覆盖率的材料,但是如果我想为命令可运行的 perl 脚本(main.pl)编写测试怎么办?
是否需要为 main.pl 编写测试,或者我只需要为模块编写测试就可以了?
假设我有这两个脚本。
命令可运行脚本
主文件
===============================================
Perl 模块
光环.pm
===============================================
在命令行中运行:
perl main.pl