我在一个模块上从 Devel::Cover 运行 cover 并在使用条件三元运算符的行中获得50%的分支覆盖率,即
Devel::Cover
cover
return @rgb ? map { hex $_ } @rgb : undef;
这个可以吗?我是否必须更改代码才能使用 if/else 块以获得100%的覆盖率?
if/else
我是 Devel::Cover 的新手,所以你能提供的关于此的任何见解都会非常有帮助 .
谢谢
您没有获得三元组的假分支的覆盖范围,因为您的测试不包括 @rgb 为空的情况 . 在这种情况下, map 将永远不会被调用,但它将返回 undef (或 () ,如@ikegami建议) .
@rgb
map
undef
()
三元与此相同:
if (@rgb) { return map { hex $_ } @rgb; } else { return undef; }
所以那里有一个分支没有被测试覆盖 .
你有几个选择:
使用空列表并删除像ikegami建议的三元组,并考虑到如果 @rgb 没有元素,则无法确保程序执行您想要的操作
添加 # uncoverable branch false 评论,如https://metacpan.org/pod/Devel::Cover#UNCOVERABLE-CRITERIA所述
# uncoverable branch false
编写一个测试用例,它希望 @rgb 没有元素
is foo('no_rgbs'), undef, 'returns undef when there are no elements';
1 回答
您没有获得三元组的假分支的覆盖范围,因为您的测试不包括
@rgb
为空的情况 . 在这种情况下,map
将永远不会被调用,但它将返回undef
(或()
,如@ikegami建议) .三元与此相同:
所以那里有一个分支没有被测试覆盖 .
你有几个选择:
使用空列表并删除像ikegami建议的三元组,并考虑到如果
@rgb
没有元素,则无法确保程序执行您想要的操作添加
# uncoverable branch false
评论,如https://metacpan.org/pod/Devel::Cover#UNCOVERABLE-CRITERIA所述编写一个测试用例,它希望
@rgb
没有元素