![]() |
1
108
这花了我一段时间,也花了我从许多不同的源代码中提取一些小片段并将它们融合在一起,但我认为我有一个小的工作示例,足以向Perl新手演示Perl构建过程,包括单元测试和代码覆盖率分析&报告。(我正在使用 ActiveState ActivePerl Windows XP Pro PC上的v5.10.0, Module::Build , Test::More , Devel::Cover ) 从Perl项目的目录开始,然后在项目目录下创建一个“lib”目录和一个“t”目录:
在“lib”目录中,创建一个名为“HelloPerlBuildWorld.pm”的文本文件。这个文件是您将要构建和测试的Perl模块。将以下内容粘贴到此文件中:
在“t”目录中,创建一个名为“HelloPerlBuildWorld.t”的文本文件。这个文件是您的单元测试脚本,它将尝试完全测试上面的Perl模块。将以下内容粘贴到此文件中:
现在备份到顶级项目目录中,创建一个名为“Build.PL”的文本文件。此文件将创建稍后使用的构建脚本。将以下内容粘贴到此文件中:
这就是你需要的所有文件。现在,在顶级项目目录的命令行中,键入以下命令:
现在,您应该能够使用以下命令运行单元测试:
看到类似的东西:
要使用代码覆盖率分析运行单元测试,请尝试以下操作:
(有人请告诉我如何配置Cover以忽略所有Perl库,除了我编写的单个文件,然后向我报告。根据CPAN文档,我无法让Cover筛选工作!) 现在,如果刷新顶级目录,您可以看到一个名为“cover_db”的新子目录。进入该目录,双击“coverage.html”文件,在您喜爱的web浏览器中打开代码覆盖率报告。它为您提供了一个漂亮的彩色编码超文本报告,您可以单击文件名,在报告中,在实际源代码旁边看到Perl模块的详细语句、分支、条件、子例程覆盖率统计信息。您可以在本报告中看到,我们根本没有介绍“bye()”例程,还有一行代码是无法访问的,但没有像我们预期的那样介绍。
要在IDE中帮助自动化此过程,您可以做的另一件事是创建更多的“Build.PL”类型的文件,这些文件显式执行我们在上面通过命令行手动完成的一些构建目标。例如,我使用具有以下内容的“BuildTest.PL”文件:
然后我设置我的IDE来执行这个文件(通过“perl BuiltTest.PL”),只需单击一次鼠标,它就会从IDE自动运行我的单元测试代码,而不是从命令行手动执行。将“dispatch('test')”替换为“dispatch('testcover')”,以自动执行代码覆盖率。键入“构建帮助”以获取可从Module::Build获得的构建目标的完整列表。 |
![]() |
2
14
作为对Kurt的回应,我将提出这个替代方案来替代他的BuiltTest.PL脚本。
它通过build.PL重用数据库build(因此假设已经运行)。 |
![]() |
3
12
我把这件事写在 Intermediate Perl 以及 Mastering Perl . 然而,库尔特给出了一个很好的总结。 我使用 Module::Release 虽然我键入一个命令,一切都发生了。 |
![]() |
4
12
这本书非常有用
另外:使用CPAN相关工具,如
|
![]() |
5
7
(披露:我是作者) 一旦您按照上述方式对所有内容进行了排序,您就可以进行下一步并使用 Devel::CoverX::Covered 到,例如。
synopsis 具体的命令行示例。 在里面 Devel::PerlySense Emacs支持在源代码缓冲区中显示覆盖率信息( screen shot ),并在覆盖测试文件之间导航。 |
![]() |
Sam · 地图吞咽。多维数组上的任务 7 年前 |
![]() |
Richard Ward · TFS2015生成代理无法同步存储库 7 年前 |
![]() |
Abhishek · 子作业成功或达到重试计数时通知上游作业 8 年前 |
![]() |
JamesStuddart · 在批处理文件中引发异常 9 年前 |
![]() |
Robert Sirre · Azure上的包还原失败 11 年前 |
![]() |
Daniel Mann · 尝试使用“Get”任务时MSBuild生成失败 12 年前 |
|
Arun Venkataraman · 配置文件不是工件名称的一部分 12 年前 |