我正在编写一个我想尽快上传到CPAN的Perl模块。我已经为它编写了一个测试套件,以确保我不会在版本之间破坏任何东西。应该在安装时运行哪种测试,而不是仅在发布时运行?我唯一可以确定释放时间的只是POD检查员,Perl评论家检查等。
答案 0 :(得分:2)
在安装时尽量避免测试,除非测试是脆弱的或需要很长时间才能完成。请记住,如果您默认不运行测试,CPAN上的模块自动测试人员也不会运行它们。
答案 1 :(得分:1)
一般情况下,如果...
,请将测试作为发布时间测试这是一个务实的选择,没有硬性和快速的公式。一方面,它捕获所有可能的错误,另一方面,安装模块的简易性和可靠性之间的平衡。你不想错过bug,但你不想要误报,并且你不需要太多的依赖来测试它。
Test::XT和Test::Distribution提供了一系列库存测试来针对大多数模块运行,其中包括测试POD,如果您有某些重要文件,如更改日志,README,如果您的MANIFEST是正确的等等。其中的大多数内容应仅在通过上述所有规则时才发布。
一个很好的例子是测试POD,无论是正确性(Test :: Pod)还是完整性(Test :: Pod :: Coverage)。一方面既不影响运行时也不需要额外的模块。但是安装用户可能有不同的POD解析器,这可能导致POD损坏。但是,破损通常是微不足道的,并不会严重影响文档的实用性。因此,在安装时测试POD 可能会捕获一些轻微的POD错误,这不值得麻烦。
Test :: Perl :: Critic是一个明确的仅发布测试。结果是完全静态的,与运行时无关。没有什么比安装失败更令人沮丧的了,因为作者使用了非佳能引用样式或者一些微不足道的东西。
Test::Dependencies和Test::DependentModules也是很好的案例研究。它有很多依赖性,它很挑剔,其结果不太可能在安装时改变。