誰か、Perl 用の優れた自動テスト スイート フレームワークを提案できますか?
14 に答える
それは本当にあなたが何をしようとしているのかに依存しますが、これの多くの背景がここにあります。
まず、通常、コアテストプログラムとしてTest::MoreまたはTest::Simpleを使用してテストプログラムを作成します。
use Test::More tests => 2;
is 3, 3, 'basic equality should work';
ok !0, '... and zero should be false';
内部的には、Test :: Builderが呼び出され、これらのテスト結果がTAP(Test Anything Protocol)として出力されます。Test :: Harness(TAP :: Harnessの薄いラッパー)は、TAPを読み取って解釈し、テストが成功したか失敗したかを通知します。上記の「証明」ツールはTest::Harnessにバンドルされているため、上記をt /ディレクトリ(標準のPerlテストディレクトリ)に「numbers.t」として保存すると、次のコマンドで実行できます。
prove --verbose t/numbers.t
または、そのディレクトリですべてのテストを実行するには(サブディレクトリに移動する場合は、再帰的に):
prove --verbose -r t/
(--verboseはもちろんオプションです)。
ちなみに、TestUnitは使用しないでください。多くの人がそれを推奨していますが、それはずっと前に放棄されており、最新のテストツールと統合されていません。
自動テスト用のツールがたくさんあるCPANテスターをチェックしてください。そのほとんどはCPANにあるはずなので、ニーズに合わせて変更することができます。TAP::Harnessを使用して独自のテスターを作成することも非常に簡単です。
正確に何をする必要があり、それをプロセスにどのように適合させようとしていますか?
くすぶりを見たことがありますか?
「開発者とテスターが(自動または手動で)アップロードし、Test Anything Protocolを使用してスモーク/回帰テストを表示するために使用するスモークテストアグリゲーター。詳細と傾向がグラフ化され、電子メールまたはAtomフィードを介して通知が提供されます。」
TAP (Test Anything Protocol) 出力を生成するテストを使用している限り、これが役立つことがあります: http://sourceforge.net/projects/smolder
ExtUtils::MakeMakerまたはModule::Buildを使用している場合は、コマンド「maketest」または「Buildtest」を入力してすべてのテストを自動的に実行できます。これにより、プロジェクトのt/内の*.tファイルが実行されます。サブフォルダー。
これらのいずれも使用していない場合は、TAP::Harnessを使用して複数のテストスクリプトの実行を自動化できます。
実際にテストを作成するには、Test::Moreまたは他の人がここで提案したモジュールのいずれかを使用します。
あなたが言った:
「私が探しているのは、インクリメンタル テストやビルド チェックなどを実行できる、より自動化されたフレームワークです」
あなたが何を求めているのか、まだ完全にはわかりません。他の人が言及しているように、Test::Harness/TAP に基づくものを見たいと思っています。Perl テスト コミュニティの大多数がそのフレームワークを使用しているため、それを使用することで、より多くのサポート (および有用な既存のコード) を得ることができます。
「インクリメンタル テスト/ビルド チェック」の意味についてもう少し話していただけますか?
特定の状況で特定のセットのテストのみを実行するように、テストをグループに分割したいと思いますか?
これを行うにはいくつかの方法があります。最も簡単な方法は、ファイル システムを使用することです。テスト ディレクトリを分割して、次のようにします。
芯/ database.t インフラストラクチャ.t スタイル/ percritic.t うい/ 何か。 何か他のもの.t
など...コマンドラインの「証明」ツールを使用して、それらすべてを実行したり、特定のディレクトリのみを実行したりできます。
証明には、どのテストをどの順序で実行するかを選択できる多くの便利なオプションがあります (たとえば、最近失敗した順序など)。これは、それ自体で、おそらく必要なものに到達するでしょう。
(ところで、Test::Simple/prove/etc. の最新バージョンを CPAN から入手することが重要です。最近のバージョンには、はるかに多くの機能があります)。
オブジェクト指向の考え方を持っている場合、または xUnit フレームワークの経験がある場合は、TAP/Test::Harness レイヤーの上に構築された Perl xUnit フレームワークである Test::Class を参照してください。PerlUnit よりもはるかに優れていると思いますが、私が書いたのでそう言えます :-)
Test::Class http://delicious.com/tag/Test::Classの詳細については、おいしいをチェックしてください。
これがあなたの求めているものではない場合、必要な機能についてもう少し詳しく説明していただけますか?
乾杯、
エイドリアン
テストのためにすべてのテストファイルを手動で実行する必要があります
確かに、prove (テストを実行する) および/または Module::Build (コードをビルドし、prove が内部で使用するのと同じテスト ハーネス コードを使用してテストを実行する) を使用する必要があります。
個人的には、Test :: Mostが好きです。基本的には、いくつかのクールな機能が追加されたTest::Moreが好きです。
最適なテスト スイート フレームワークはTest::Harnessで、テスト実行の制御、結果の収集などを処理します。
特定の種類のテストを提供するために、さまざまなモジュールが存在します。最も一般的なモジュールは、Test::SimpleおよびTest::Moreにあります(どちらも Test-Simple ディストリビューションに含まれています)。CPAN の Test 名前空間全体は、特殊な単体テスト モジュール専用であり、その大部分は Test::Harness で実行されるように設計されています。
慣例により、テストはプロジェクトの t/ ディレクトリに格納され、各テスト ファイルにはファイル拡張子 .t が使用されます。テストは一般的に次の方法で実行されます
prove t/*.t
通常、モジュールの配布には、インストール前にテスト スイートを実行する「test」という名前の make ターゲットが含まれています。デフォルトでは、CPAN インストール プロセスでは、ビルド後にモジュールをインストールする前にテストに合格する必要があります。
perlでの自動テストについては、ツールが含まれているTest::Harnessを参照してください。prove
このprove
ツールは、次のコマンドで実行できます。
prove -r -Ilib t
lib
これにより、インクルードパスに追加しながら、「t/」ディレクトリ内のすべての*.tファイルが再帰的にテストされます。
Test::More、または一般的には、 TAPを出力するものなら何でもいいと思います
現在、Test::More を使用していますが、現在の問題は、テストのためにすべてのテスト ファイルを手動で実行する必要があることです。私が探しているのは、インクリメンタル テスト/ビルド チェックなどを実行できる、より自動化されたフレームワークです。
そのための Test::More のラッパーが理想的ですが、より優れた、より機能的なものでも問題ありません。
それが役立つかどうかを確認するために、PerlUnit を調べています。
「証明」ユーティリティ (App::Prove から) を知っていますか? 指定されたディレクトリですべてのテストを再帰的に実行するように指示できます。冗長性などがあります。