如何在Perl Makefile中指定TAP :: Harness :: Junit?

时间:2018-11-22 07:48:45

标签: perl makefile

我有一个使用MakeMaker的Makefile.PL这样的我的perl模块:

#!/usr/bin/perl
use strict;
use warnings FATAL => 'all';

use 5.008;

use ExtUtils::MakeMaker;

WriteMakefile
(
    NAME          => 'MyModule',
    AUTHOR        => 'Subu',
    LICENSE       => 'perl',
    PREREQ_PM     => {
        'File::Basename' => '0',
    },
    TEST_REQUIRES => {
        'Test::More'       => '0.47',
        'Test::MockModule' => 'v0.170.0',
        'Test::MockObject' => '1.20180705',
        'Devel::Cover'     => '1.31',
        'Test::File'       => '1.443'
    },
    BUILD_REQUIRES => {
        'Log::Log4perl'  => '1.49',
        'JSON::Parse'    => '0.55',
        'Time::Piece'    => '1.33',
        'Text::CSV'      => '1.97'
    },
    EXE_FILES => [
        'src/main/perl/MyModule/main.pl'
    ],

    test => {TESTS => 'src/test/perl/MyModule/*/*.t 
src/test/perl/MyModule/*/*/*.t'}

);

我可以使用

进行测试
perl Makefile.PL
make 
make test

但是,我想使用TAP :: Harness :: Junit格式化输出。如何在makefile中指定它?

我知道我可以通过证明运行测试

prove --formatter TAP::Formatter::JUnit *.t

但是我想知道是否可以将其插入我的makefile中。

1 个答案:

答案 0 :(得分:2)

Makefile.PL主要用于使您的模块可以cpan安装。例如,make test将在模块安装期间运行,以验证其在目标系统上是否正常运行。为此,更改格式化程序(并添加额外的依赖项)没有帮助。

Makefile.PL不一定是您个人开发工作流程或任何持续集成脚本的地方。例如。如果要在Jenkins服务器上生成JUnit测试报告,则可能需要将prove --formatter TAP::Formatter::JUnit *.t命令放入Jenkinsfile中。如果您更愿意编写Makefile,则可以使用一个单独的Makefile进行个人开发,尽管您必须使用make -f MyMakefile test来调用它。