1

私はTest::Moreを使用して、すべての社内モジュールを順番にロードするコードベースの一部の単体テストに取り組んでいますuse_ok()。リグレッションをより簡単に検出できるように、警告を単体テストにとって致命的なものにしたいと思います。

ここでTest::NoWarningsを使用することが提案されましたが、実際、それは私が探しているもののようです。

スクリプトは次のとおりです。

#!/usr/bin/perl -w
use File::Find;
use File::Spec;
use Test::More;
use Test::NoWarnings;


# Determine the filepaths of every .pm file in the lib directory
my @files;
File::Find::find(
    sub
    {
        if (/\.pm$/)
        {
            push(@files, $File::Find::name);
        }
    },
    "$ENV{'CODE_ROOT'}/lib"
);
done_testing(scalar(@files) + 1);

use lib "$ENV{'CODE_ROOT'}/lib";
foreach my $file (@files)
{
    # <code removed for brevity: format file name into Module::Hierarchy::For::Use>
    use_ok($includeString);
}

1;

EXPORT()さまざまなモジュールによって生成されたサブルーチンが再定義の警告を発生させるいくつかのケースに遭遇しましたが、これらの警告はTest::NoWarningsモジュールによってキャッチされません。対照的に、小文字の属性宣言による警告は正しくキャッチされます。

明確にするために、 vsの使用に関する警告読み、警告自体のソースを処理しています。の動作に関する私の仮定が正しいかどうか、もしそうなら、そのようなことがキャッチされるように単体テストを変更するにはどうすればよいか、特に疑問に思っています。EXPORT()EXPORT_OK()Test::NoWarnings

4

1 に答える 1