Perl の Test::More または Test::Simple モジュールを使用するときの関数名の規則はありますか?
テスト前にテスト環境をセットアップし、テストが正常に完了した後に環境を破棄するために使用される関数の名前について具体的に尋ねています。
乾杯、
ロブ
Perl の Test::More または Test::Simple モジュールを使用するときの関数名の規則はありますか?
テスト前にテスト環境をセットアップし、テストが正常に完了した後に環境を破棄するために使用される関数の名前について具体的に尋ねています。
乾杯、
ロブ
XUnitスタイルのテストをさらに探している場合は、Test::Classを確認してください。これは、環境をセットアップおよび破棄するメソッドの属性Test(setup)
と属性を提供します。Test(teardown)
また、プランを処理するためのより優れた方法を提供し(テストメソッドごとに個別に提供できるため、カウントがはるかに簡単になります)、テストクラス階層を介してテストを継承できます。
私はそこにそのような慣習があるとは思わない。
リソースがファイル全体で使用される場合、これを行う唯一の方法は、おそらく 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
エスポに感謝します。
関連するperldocsを見てきましたが、セットアップと分解の側面に関する実際の規則はありません。
XUnitシリーズのテストとは異なります。
Jagmalの回答に感謝しますが、名前で何をしているのか明確になっていないため、セットアップとティアダウンにBEGINブロックとENDブロックを使用するかどうかはわかりません。また、テストごとに、つまり各.tファイルごとに1回のセットアップ実行と1回のティアダウン実行しかないという明らかな問題もあります。
Test :: Mostをざっと見てみましたが、特にexplain関数は非常に興味深いものに見えます。マットに感謝します。
うーん。BEGINブロックとENDブロックの使用についてさらに考えてみると、テストの粒度を下げて、必要なセットアップと分解が1つだけになるようにすると、これは良い解決策になると思います。
乾杯、
ロブ
多くの (ほとんどの) データ処理スクリプトが Perl で書かれているため、単体テストには Test::More を広く使用しています。関数名に特定の規則はありませんが、Jagmal が示唆するようなことを行います。つまり、テストを小さなチャンクに分割し、ローカルで初期化します。
この場合、各サブテストは、テスト スクリプト内の個別の関数にカプセル化されています。これに加えて、すべてのサブテスト (完全な単体テスト) を実行したり、個々のサブテストまたはサブテストのセットを呼び出して、現在取り組んでいるものだけを実行できるようにするフレームワークがあります。
公式の規則セットがあるとは思わないので、http://perldoc.perl.org/Test/More.htmlにある例を見て、テストの書き方を確認することをお勧めします。
Perlテストスクリプトは、特別なものでも魔法のようなものでもありません。そのため、他のPerlスクリプトとまったく同じものを含めることができます。
ルーチンには任意の名前を付けて、テストの前、後、およびテストと絡み合って呼び出すことができます。
テストの前に任意の量の初期化コード、テストの後に任意の量のクリーンアップコード、およびテストに混合された任意の量の他のコードを含めることができます。
これはすべて、CPANスタイルのt/*。tテストスクリプトについて話していることを前提としています。あなたはそうだと思いますが、私が適切に目を細めれば、テストハーネスの拡張に関する質問をなんとか読むことができます。
私が提案する最初の慣例は、Test::More を Test::Most から捨てることです。
Ruby の Cucumber のように、受け入れテストも受け入れる場合は、Test::More と受け入れテストのキュウリ スタイルを使用しているhttp://github.com/kesor/p5-cucumberの小さな例を見てください。 .