サーチ…


Perlユニットテストの例

以下はPerlテストスクリプトの簡単な例で、テスト中のクラス/パッケージ内の他のメソッドのテストを可能にする構造を示しています。このスクリプトは、TAP(Test Anything Protocol)と呼ばれる単純な「ok」/「not ok」テキストで標準出力を生成します。

通常、 proveコマンドはスクリプトを実行し、テスト結果を要約します。

#!/bin/env perl
# CPAN
use Modern::Perl;
use Carp;
use Test::More;
use Test::Exception;
use Const::Fast;

# Custom
BEGIN { use_ok('Local::MyPackage'); }

const my $PACKAGE_UNDER_TEST => 'Local::MyPackage';

# Example test of method 'file_type_build'
sub test_file_type_build {
    my %arg    = @_;
    my $label  = 'file_type_build';
    my $got_file_type;
    my $filename = '/etc/passwd';

    # Check the method call lives
    lives_ok(
        sub {
            $got_file_type = $PACKAGE_UNDER_TEST->file_type_build(
                filename => $filename
            );
        },
        "$label - lives"
    );

    # Check the result of the method call matches our expected result.
    like( $got_file_type, qr{ASCII[ ]text}ix, "$label - result" );
    return;
} ## end sub test_file_type_build

# More tests can be added here for method 'file_type_build', or other methods.


MAIN: {

   subtest 'file_type_build' => sub {
      test_file_type_build();
      # More tests of the method can be added here.
      done_testing();
   };

   # Tests of other methods can be added here, just like above.


   done_testing();
} ## end MAIN:

ベストプラクティス

テストスクリプトは1つのパッケージ/クラスだけをテストすべきですが、多くのスクリプトを使用してパッケージ/クラスをテストすることができます。

参考文献



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow