【问题标题】:How do I specify TAP::Harness::Junit in the perl makefile?如何在 perl makefile 中指定 TAP::Harness::Junit?
【发布时间】:2018-11-22 19:38:03
【问题描述】:

我有一个使用 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 中。

【问题讨论】:

    标签: perl makefile


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这很有道理。
    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多