老实说,我不确定这是错误还是我遗漏了一些东西。
Devel::Cover
基于先前的条件以某种方式忽略了我的# uncoverable branch true
。
我有2个文件-Test
和Test2
-uncoverable
在Test
中。
现在,当未注释触发条件(见下文)时,我将获得50%的分支覆盖率,如下所示:
现在注释掉触发条件,然后再次运行所有命令,我得到:
现在可以正确忽略该分支,因为它是不可恢复的。唯一更改的是注释掉触发条件。
我真的不了解这种行为-如果有人愿意尝试一下,看看这是否是我不了解某些内容或错误。
免责声明:我不是perl专家:)我试图进一步简化它,但是我无法以其他方式复制它-甚至对此简化也很感激-也许它将有助于追溯其根本原因。
编辑:我做了此存储区以使其更易于重现:https://github.com/lukaskuzmiak/Devel--Cover_coverage_issue_PoC
package My::Test;
use 5.026;
use strict;
use warnings;
use My::Test2;
sub test {
my $test2 = My::Test2->new({});
if ($test2 > 1) { say 'something'; } # let's call this "trigger condition"
# uncoverable branch true
$test2->asdf(
{
variable => 'asdf'
}
) or say 'something else';
return 1;
}
1;
再加上Test2
package My::Test2;
use 5.026;
use strict;
use warnings;
sub new {
my ($class, $args) = @_;
my $self = {};
return bless $self, $class;
}
sub asdf {
my ($class, $args) = @_;
return 1;
}
1;