1
我有一個示例代碼,我有if
聲明or
運算符。在我的測試中,我檢查:這是Devel :: Cover code coverage中的一個錯誤嗎?
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來運行代碼覆蓋的開發封面。下面是我使用命令:
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
那麼通過defined_values(undef,undef); ? – jmcneirney
@toolic我的不好,標題是騙人的。我意識到這個錯誤不在Test :: More中,而是代碼覆蓋。 @jmcneirney條件'undef undef'與'undef defined'相同,因爲布爾運算符是短路運算符。 –
你在cpan上使用最新版本的Devel :: Cover(1.23)嗎? – toolic