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

Perl 如何在ExtUtils::Makefile.PL中指定测试先决条件,perl,perl-module,makemaker,Perl,Perl Module,Makemaker,PREREQ\u PM指定运行时的先决条件,但如何指定运行测试用例所需的模块 我是否应该为此使用BUILD\u REQUIRES?如果没有模块测试失败,那么我将其列在PREREQ\u PM中,无论测试或运行模块是否需要它 如果一些测试需要模块,但运行模块不需要模块,我会在测试运行时检测到这些模块,如果找不到,我会跳过测试(通过) 我认为ExtUtils::MakeMaker中没有任何字段可以满足您的需要。定义了模块如何将其先决条件传递给工具链。修订了版本2规范。测试阶段现在有自己的先决条件列表

PREREQ\u PM
指定运行时的先决条件,但如何指定运行测试用例所需的模块


我是否应该为此使用
BUILD\u REQUIRES

如果没有模块测试失败,那么我将其列在
PREREQ\u PM
中,无论测试或运行模块是否需要它

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

我认为ExtUtils::MakeMaker中没有任何字段可以满足您的需要。

定义了模块如何将其先决条件传递给工具链。修订了版本2规范。
测试
阶段现在有自己的先决条件列表

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

当从v2规范转换为时,它将
测试
需求合并为
构建_所需

因此,是的,如果您坚持使用MakeMaker,运行测试所需的任何模块都应该列在
BUILD\u REQUIRES
PREREQ\u PM
应仅包含安装模块后仍需要的模块。

从6.64开始,有一个
TEST\u REQUIRES
参数

use ExtUtils::MakeMaker 6.64;

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

很好的解释。(这也是我一直以来做这件事的一个很好的理由。)@smonff,这个答案已经过时了。MakeMaker实际上在我编写它几个月后就得到了
TEST\u所需的
支持。我会在有机会的时候更新它。@cjm我感谢你提到它:D!