0

そこで、私は自分用にいくつかのモジュールを作成しました。Module::Build を使用して perl モジュールのテストを作成する方法についてのドキュメントがあるかどうか疑問に思っています。

私が直面している特定の問題は、HomeBrew::IOHomeBrew::Stats、およびの 3 つのモジュールHomeBrew::Bioがあり、ファイルが配置されている方法でそれらを個別にビルドまたはテストする方法がわからないことです。

3 つのモジュール ファイルは同じディレクトリ.../HomeBrew/lib/HomeBrew/にあります。ディレクトリに 3 つの Build.PL ファイル.../HomeBrew/(名前IO-Build.PLは など) があり、3 つの .t ファイルは (名前は etc) にあり.../HomeBrew/t/ますHomeBrew-IO.t

3 つの Build.PL ファイルは、一度に 1 つのモジュールのみをビルドすることになっていることを認識していないようです。次のいずれかをお見せします。

#!/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();

(おそらく、POSIX の代わりに File::Temp を使用する必要がありますが、これはテストでのみ使用されるため、優先度は高くありません)

将来的には、サブルーチンごとにテスト スクリプトを 1 つ持つように変更して、一度に 1 つのサブルーチンBuild test checkExistだけを言ってチェックできるようにしたいと考えています。

そう、

  1. create_build_script() がすべての .pm ファイルを .pm ファイルに含めないようにするにはどうすればよいですかlib/HomeBrew? すべての HomeBrew モジュール ファイルをディレクトリ内に保持したいのです.../HomeBrewが、それぞれを別のディレクトリに分ける必要がありますか?

  2. Module::Build がモジュール全体またはその一部のみをテストする方法を認識できるように、各サブルーチンのテストを作成するにはどうすればよいですか?

今、私が言う./Build testと、3 つのモジュールすべてを一度にテストします (そして、./Build install3 つすべてを一度にインストールします)。

4

2 に答える 2

5

問題はあなたの前提にあり、それらを別々に構築してテストする必要があるように思えます。それを行いたい場合は、それらを個別のディレクトリに、独自の Build.PL ファイルなどで個別にインストールする必要があります。ただし、一緒に配布する必要がある場合は、一緒にビルドしてテストする必要があります。

個別にテストする場合は、各サブを独自のテスト ファイルでテストすることも、他の方法でテストを分割することもできます。make testorを使用してテストを呼び出す必要はありません./Build test-- 気になるテストをいつでも明示的に実行できます: perl -Ilib t/<name of test>

于 2010-09-13T19:24:42.697 に答える
1

あなたは Ether へのコメントで、常にすべてのテストを実行したいとは限らないと言っています。その場合、App::Proveを使用して、表示したいテストだけを実行することをお勧めします。追跡して表示する情報を管理するための他の多くの機能があります。

于 2010-09-14T05:12:20.730 に答える