是否有使用Module :: Build编写测试(和构建)的文档?

fli*_*ies 0 testing perl module perl-module

所以我已经为我自己使用了一些模块,我想知道是否有任何关于如何使用Module :: Build为perl模块编写测试的文档.

我运行到具体的问题是,我有三个模块,HomeBrew::IO,HomeBrew::Stats,和HomeBrew::Bio,我无法弄清楚如何建立或单独测试他们的文件的排列方式.

这三个模块文件位于同一目录中.../HomeBrew/lib/HomeBrew/,我有三个Build.PL文件位于.../HomeBrew/目录(名称IO-Build.PL等),三个.t文件位于.../HomeBrew/t/(名为HomeBrew-IO.tetc).

似乎发生的是,三个Build.PL文件似乎并不知道它们一次只能构建一个模块.我会告诉你其中一个:

#!/usr/bin/perl

use warnings;
use strict;
use Module::Build;

my $build = Module::Build->new
    (
     module_name => "HomeBrew::IO",
     dist_author => "George Locke",
     dist_abstract => "Various utilities for reading files",
     build_requires => {
        'Test::More' => '0.10',
        'POSIX' => '0', # for tmpname()
        'Test::Exception' => '0', # to test that checkExist dies
     },
    );
$build->create_build_script();
Run Code Online (Sandbox Code Playgroud)

(我应该使用File :: Temp而不是POSIX,但这仅用于测试,因此它不是高优先级)

在将来,我想更改我的测试脚本,为每个子程序设置一个,这样我就可以说Build test checkExist一次只检查一个子程序.

所以,

  1. 我如何确保create_build_script()不包含每个.pm文件lib/HomeBrew.我更喜欢将所有HomeBrew模块文件保存在.../HomeBrew目录中,但是我是否必须将每个文件分成不同的目录?

  2. 如何为每个子例程进行测试,以便Module :: Build知道如何测试整个模块或仅测试其中的一部分?

现在,当我说它./Build test一次测试所有三个模块时(并同时./Build install安装所有三个模块).

Eth*_*her 5

在我看来,问题在于你的前提,你需要单独构建和测试它们.如果你想这样做,它们应该是在他们自己的目录中使用他们自己的Build.PL文件的单独安装.但是,如果它们应该一起分发,它们应该一起构建和测试.

至于单独测试内容,您可以在自己的测试文件中测试每个子项,或者以您喜欢的任何其他方式拆分测试.你不必用make test或调用你的测试./Build test- 你总是可以明确地运行你关心的测试:perl -Ilib t/<name of test>.