当Module::Starter初始化项目时,它会创建一个名为manifest.t
的测试。
#!perl -T
use strict;
use warnings;
use Test::More;
unless ( $ENV{RELEASE_TESTING} ) {
plan( skip_all => "Author tests not required for installation" );
}
eval "use Test::CheckManifest 0.9";
plan skip_all => "Test::CheckManifest 0.9 required" if $@;
ok_manifest();
使用Build test
运行测试时,这是输出的一部分:
t\00-load.t ....... ok
t\boilerplate.t ... ok
t\manifest.t ...... skipped: Author tests not required for installation
我从狭义上理解结果($ENV{RELEASE_TESTING}
未设置,因此跳过测试),但我并没有完全掌握全局。什么是预期的开发过程?我认为运行测试以确认我的模块的清单是准确的是个好主意。我应该设置该环境变量吗?如果是这样,在开发过程中的哪个阶段?
答案 0 :(得分:4)
许多模块发行版都有测试,不检查代码是否有效,但是发布是否处于合适的发布状态。诸如MANIFEST是最新的,是否所有功能都已记录在POD中等等。
为了节省时间,除非设置了RELEASE_TESTING环境变量,否则可以编写这些测试以跳过它们自己。这是一个非正式的标准。这样,当人们安装模块时,这些测试不会运行,当作者只是检查代码更改是否破坏时,它们也不会运行。
在释放你的dist之前,你应该运行RELEASE_TESTING=1 make test
(或Build等效物)。如果您使用Dist::Zilla(我强烈推荐),您可以使用dzil test --release
运行发布测试。该标志也由TestRelease plugin自动设置,如果你使用dzil,你肯定会使用它。
通常用于控制测试的其他环境变量是AUTOMATED_TESTING和AUTHOR_TESTING。 AUTOMATED_TESTING由运行自动烟雾测试的CPAN testers设置。