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一次只检查一个子程序.
所以,
我如何确保create_build_script()不包含每个.pm文件lib/HomeBrew.我更喜欢将所有HomeBrew模块文件保存在.../HomeBrew目录中,但是我是否必须将每个文件分成不同的目录?
如何为每个子例程进行测试,以便Module :: Build知道如何测试整个模块或仅测试其中的一部分?
现在,当我说它./Build test一次测试所有三个模块时(并同时./Build install安装所有三个模块).
在我看来,问题在于你的前提,你需要单独构建和测试它们.如果你想这样做,它们应该是在他们自己的目录中使用他们自己的Build.PL文件的单独安装.但是,如果它们应该一起分发,它们应该一起构建和测试.
至于单独测试内容,您可以在自己的测试文件中测试每个子项,或者以您喜欢的任何其他方式拆分测试.你不必用make test或调用你的测试./Build test- 你总是可以明确地运行你关心的测试:perl -Ilib t/<name of test>.