gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:01:14 25 4
gpt4 key购买 nike

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

我遇到的具体问题是我有三个模块,HomeBrew::IOHomeBrew::StatsHomeBrew: :Bio,我不知道如何按照文件的排列方式分别构建或测试它们。

三个模块文件位于同一目录 .../HomeBrew/lib/HomeBrew/ 中,我在 .../HomeBrew/目录(名为IO-Build.PL等),以及.../HomeBrew/t/中的三个.t文件(名为HomeBrew-IO.t 等)。

似乎发生的情况是,三个 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();

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

将来,我想更改我的测试脚本,让每个子程序都有一个,这样我就可以说 Build test checkExist 并一次只检查一个子程序。

所以,

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

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

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

最佳答案

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

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

关于perl - 是否有使用 Module::Build 编写测试(和构建)的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3703298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com