如何在ExtUtils :: MakeMaker Makefile.PL中指定测试先决条件

时间:2012-08-29 06:54:37

标签: perl perl-module makemaker

PREREQ_PM指定运行时先决条件,但是如何指定运行测试用例需要哪些模块?

我应该使用BUILD_REQUIRES吗?

3 个答案:

答案 0 :(得分:4)

ExtUtils::MakeMaker 6.64开始,有一个TEST_REQUIRES参数。

use ExtUtils::MakeMaker 6.64;

WriteMakefile(
    ...,
    TEST_REQUIRES => {
        Test::More => 0.95,
        },
    ...,
    );

答案 1 :(得分:3)

CPAN::Meta::Spec定义了模块如何将其先决条件传达给工具链。版本2规范修订了the way prerequisites are listedtest阶段现在有自己的先决条件列表。

但MakeMaker尚未针对v2规范进行更新,可能永远不会更新。我所知道的唯一完全兼容的v2分发工具是Dist::Zilla(我推荐它的原因不止于此)。

CPAN::Meta::Converter从v2规范转换为v1.4时,它会将test要求合并到build_requires

所以是的,如果你坚持使用MakeMaker,那么运行测试所需的任何模块都应列在BUILD_REQUIRES中。 {/ 1}}应仅包含模块安装后仍需要的模块。

答案 2 :(得分:1)

如果测试在没有模块的情况下失败,那么无论是测试还是运行模块,我都会在PREREQ_PM中列出它。

如果我需要模块进行某些测试,但不需要运行模块,我会在测试运行时检测到这些模块,如果找不到,我会跳过测试(通过PASS)。

我认为ExtUtils :: MakeMaker中没有任何字段可供您使用。