我在http://www.perlmonks.org看到了一些类似的问题,但我仍然没有得到它。 想象一下,我有一个带有'lib /'和't'目录的项目。我用'证明'来运行我的测试:
$ cd $PROJECT_ROOT
$ prove ./*.t
我想在html中获取“lib /”目录中的一个或多个文件的报告。我不想要报告“t”目录中的文件。 一个简单的例子就足够了。感谢
答案 0 :(得分:6)
perl Makefile.PL
或perl Build.PL
cover -test
答案 1 :(得分:5)
正确的方法是始终使用Makefile.PL/Build.PL,就像选择的答案所示。但是,有时你不是那个刚开始的人,所以......
我曾经制作过伪造的文件:
% cat Makefile
test:
prove -Ilib -r t
以下似乎也有效(无需触摸磁盘上的任何文件):
cover -t -make 'prove -Ilib -r t; exit $?'
这只能用于perl的system
/ exec
如何处理其中包含shell元字符的参数(在本例中为;
)并且如果{{1}将来可能会中断决定更严格地引用它。它也不应该在Windows下工作。我希望cover
代之以cover
选项。
这个仍然会为* .t以及非标准位置的CPAN模块生成覆盖范围。可以使用+ select / + ignore选项修复此行为(请参阅Devel::Cover's manpage):
-prove
所以tl; dr“magic”命令是
cover -t +select ^lib +ignore ^
编辑以下内容对我不起作用 - 它只打印简短摘要:
cover -t +select ^lib +ignore ^ -make 'prove -Ilib -r t; exit $?'
请注意 PERL5OPT="$PERL5OPT -MDevel::Cover" prove -Ilib -r t
cover -t +select ^lib +ignore ^
将prove -MSomething
应用于Something
本身并且不会将其传递(与-I不同)。