我有一个示例代码,其中if
运算符为or
语句。在我的测试中,我检查:
0X
10
11
当我检查代码覆盖率时,它显示67%的条件。我在这里遗漏了什么,或者这是Devel:Cover
中的错误这是我的代码:
use strict;
use diagnostics;
use warnings;
use Test::More tests => 3;
sub defined_values{
my ($a,$b) = @_;
if( not defined $a or not defined $b ){
return 'not defined';
}
return 'defined';
}
test_defined_values_aNotDefined_returns_notDefined();
test_defined_values_bNotDefined_returns_notDefined();
test_defined_values_abDefined_returns_Defined();
sub test_defined_values_aNotDefined_returns_notDefined{
is(defined_values(undef, 'b'), 'not defined', 'test_defined_values_aNotDefined_returns_notDefined');
}
sub test_defined_values_bNotDefined_returns_notDefined{
is(defined_values('a', undef), 'not defined', 'test_defined_values_bNotDefined_returns_notDefined');
}
sub test_defined_values_abDefined_returns_Defined{
is(defined_values('a', 'b'), 'defined', 'test_defined_values_abDefined_returns_Defined');
}
顺便说一句,实际的子程序在包中,这是在测试文件中写的示例代码。
我使用Jenkins运行devel cover以进行代码覆盖。以下是我使用的命令:
cd .\usr
if exist cover_db\NUL call cover -delete
if exist test_output\NUL rmdir /S /Q test_output
del /S t\*.tap
set HARNESS_PERL_SWITCHES=-MDevel::Cover
set PERL_TEST_HARNESS_DUMP_TAP=.\test_output
call prove -I .\lib --formatter=TAP::Formatter::Jenkins -l t
for /f "tokens=*" %%A in ('forfiles /S /P t /C "cmd /c if @isdir==TRUE echo @relpath"') do (
set "file=%%~A"
setlocal enableDelayedExpansion
call prove -I .\lib --formatter=TAP::Formatter::Jenkins -l t!file:~1!
endlocal
)
cover -report html
答案 0 :(得分:4)
是的,您应该将其报告为Devel::Cover
中的错误。如果我重新编码你的子,我得到100%:
sub defined_values{
my ($a,$b) = @_;
if( defined $a and defined $b ){
return 'defined';
}
return 'not defined';
}