6

プログラム (または関数) の実際の出力と参照出力の差分を表示できる Perl モジュールはありますか? 違いがある場合、テストは失敗します。

また、違いはあるが出力に問題がない場合(機能が変更されたため)、実際の出力を将来の参照出力としてコミットできるようにしたいと考えています。

4

6 に答える 6

12

Perl には、テストを行うための優れたユーティリティがあります。最も一般的に使用されるモジュールは、おそらく Test::More であり、回帰テストを作成するために必要と思われるすべてのインフラストラクチャを提供します。証明ユーティリティは、テスト スイートを実行し、結果を要約するための簡単なインターフェイスを提供します。Test::Differences モジュール (Test::More と一緒に使用できます) も役に立つかもしれません。相違点を並べて比較する形式にします。実際の出力を新しい参照資料としてコミットすることに関しては、テスト対象のコードが出力を提供する方法とそれをキャプチャする方法によって異なります。ファイルに書き込んでから比較すれば簡単です。その場合は、テスト スイート内で Text::Diff モジュールを使用することをお勧めします。

于 2008-09-15T20:26:45.727 に答える
6

前述のように、Test::Differences はこれを達成するための標準的な方法の 1 つですが、PerlUnit について言及する必要がありました: これは使用しないでください。これは「アバンドウェア」であり、標準の Perl テスト ツールとは統合されません。したがって、すべての新しいテスト モジュールが出てくる場合、それらを使用したい場合は、それらの機能を移植する必要があります。(誰かがこの放棄されたモジュールのメンテナンスを引き受けた場合は、私に連絡してください。PerlUnit との統合を支援したいコア テスト ツールを維持しているので、彼らと話す必要があります)。

免責事項: Id が書いたわけではありませんが、現在 Test::Differences を管理しているため、偏見がある可能性があります。

于 2008-09-16T06:27:21.010 に答える
4

私は、Test::Simple と Test::More の機能をより多く使用する傾向があります。PerlUnit を調べたところ、Test::Simple および Test::More ライブラリを使用して標準ライブラリに既に組み込まれている機能の多くを提供しているようです。

于 2008-09-15T20:16:46.127 に答える
3

PerlUnit の使用を推奨している方に質問します。3年間リリースされていません。本当に xUnit スタイルのテストが必要な場合は、Test::Classを見てください。これは同じ仕事をしますが、より Perlish な方法で行います。それがまだ維持されており、定期的にリリースされているという事実も害にはなりません。

プロジェクトにとって意味があることを確認してください。古き良きTest::Moreで十分かもしれません(通常は私にとってはそうです)。ドキュメントの「 Test::Class を使用すべきではない理由」セクションを読むことをお勧めします。

于 2008-09-16T11:03:38.867 に答える
2

プログラムの出力をテストするために、Test::Commandがあります。これにより、プログラムのstdoutとstderr(およびexit値)を簡単に確認できます。例えば:

use Test::Command tests => 3;

my $echo_test = Test::Command->new( cmd => 'echo out' );

$echo_test->exit_is_num(0, 'exit normally');
$echo_test->stdout_is_eq("out\n", 'echoes out');
$echo_test->stderr_unlike( qr/something went (wrong|bad)/, 'nothing went bad' )

モジュールには、好みに応じて機能的なインターフェイスもあります。

于 2008-09-16T01:59:29.640 に答える
2

コミュニティ標準の主力製品は、Test::Simple (テストを開始するため) と Test::More (Test::Simple でできる以上のことが必要な場合) です。どちらも期待される出力と実際の出力の概念に基づいて構築されており、どちらも発生時に違いを示します。これらのモジュールの perldoc があなたを助けてくれます。

Perl QA wikiも参照してください。Perl テストに本当に興味がある場合は、perl-qa メーリング リストを調べる価値があるかもしれません。ただし、一般的には、Perl 用のテスト システムを使用することよりも、システムをテストすることに関するものです。言語内のシステム。

最後に、module-starter ツール (Module::Starter から) を使用すると、新しい作業のための、または既存のコードをドロップするための、既製のテスト ハーネス セットアップを含む、非常に優れた「CPAN 標準」レイアウトが得られます。

于 2008-09-16T05:56:09.573 に答える