Perl Test::More を使用する場合、関数名に規​​則はありますか?

StackOverflow https://stackoverflow.com/questions/45485

  •  09-06-2019
  •  | 
  •  

質問

Perl Test::More または Test::Simple モジュールを使用する場合、関数名に規​​則はありますか?

特に、テスト前にテスト環境をセットアップし、テストが正常に完了した後に環境を破棄するために使用される関数の名前について質問しています。

乾杯、

ロブ

役に立ちましたか?

解決

そのような慣例は存在しないと思います。

ファイル全体にわたってリソースを使用する場合、おそらく BEGIN/END ブロックを使用することが唯一の方法です。

私が採用する一般的なアプローチは、関連するテストを 1 つのコード ブロックに配置し、そこで変数/リソースなどを初期化することです。おそらく、関数ごとにテストの数を簡単に数えることができるでしょう。

何かのようなもの ...

BEGIN {
   # If you want to set some global db setting/file setting/INC changes etc
}

# Tests functionality 1...
{
     # have fun .... 
}

# Tests functionality 2...
{
     # have more fun .... 
}

END {
   # Clean up the BEGIN changes
}

別のメモとして、perl でのテストについてはこれを読んでください。 http://perlandmac.blogspot.com/2007/08/using-perl-testsimple-and-testmore.html

他のヒント

さらに XUnit スタイルのテストを探している場合は、チェックしてください。 テスト::クラス. 。それは、 Test(setup) そして Test(teardown) 環境をセットアップしたり破棄したりするメソッドの属性。また、プランを扱うためのより優れた方法 (各テスト メソッドに個別に 1 つを提供できるため、カウントがはるかに面倒ではなくなります) も提供され、テスト クラス階層を介してテストを継承できます。

公式な規則は存在しないと思うので、次の URL で例を参照することをお勧めします。 http://perldoc.perl.org/Test/More.html そしてテストをどのように書くかを見てください。

データ処理スクリプトの多く (ほとんど) が Perl で記述されているため、単体テストには Test::More を広範囲に使用しています。関数名に特別な規則はありませんが、Jagmal が提案しているようなことを行います。つまり、テストを小さなチャンクに分割し、ローカルで初期化します。

この例では、各サブテストはテスト スクリプト内の別の関数にカプセル化されています。これに加えて、すべてのサブテスト (完全な単体テスト) を実行したり、個別のサブテストまたはサブテストのセットを呼び出して、現在作業しているものだけを実行できるようにするフレームワークがあります。

エスポさん、ありがとう。

関連する perldocs を調べましたが、セットアップと分解の側面に関する実際の規則はありません。

XUnit シリーズのテストとは異なります。

Jagmal の回答ありがとうございます。しかし、名前によって何をしているのかが明確になっていないため、セットアップとティアダウンに BEGIN ブロックと END ブロックを使用するかどうかわかりません。また、テストごとにセットアップ実行とティアダウン実行が 1 回しか行われないという明らかな問題もあります。各 .t​​ ファイルごとに。

Test::Most をざっと見たところ、特に Explain 関数が非常に興味深いようです。ありがとうマット。

うーん。BEGIN ブロックと END ブロックの使用についてさらに考えてみると、必要なセットアップとティアダウンが 1 つだけになるようにテストの粒度を下げれば、これが良い解決策になるのではないかと考えています。

乾杯、

ロブ

私が提案する最初の規則は、Test::More を捨てて Test::Most にすることです。

Perl テスト スクリプトは決して特別なものでも魔法でもありません。そのため、他の Perl スクリプトとまったく同じものを含めることができます。

ルーチンには任意の名前を付けることができ、テストの前、後、またはテストと組み合わせて呼び出すことができます。

テストの前に任意の量の初期化コード、テスト後に任意の量のクリーンアップ コード、およびテストに任意の量のその他のコードを混在させることができます。

これはすべて、CPAN スタイルの t/*.t テスト スクリプトについて話していることを前提としています。そうだと思いますが、目を細めて読めば、あなたの質問はテスト ハーネスの延長に関するものであるとなんとか理解できます。

Ruby の Cucumber のように、受け入れテストにも参加することに前向きな場合は、この小さな例を見てください。 http://github.com/kesor/p5-cucumber それは Test::More とキュウリスタイルの受け入れテストを使用することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top