4

私はたくさんのperlテストを持っています:

  1. 機能テスト
  2. テストの機械化
  3. 実際の単体テスト、関数と戻り値のアサートなど
  4. WebServices などの外部サービスを含むテスト
  5. DB 中心のテスト
  6. REST テスト

私はそれらすべてをproveを介して実行し、理論的にはそれらをさまざまなディレクトリに再配置して、のようなものを実行しますがfind t/ -name '*.t' ! -name '*timeout*' | xargs prove -l、テストに特定の方法で名前を付けるのは非常に困難です(そして良いエンジニアリングではありません)ので、find.

proveコマンドラインから実行するときに、テストのワイルドカード リストを渡す方法はありますか?
そうでない場合、現在使用している方法よりも適切な方法はありますか?

4

2 に答える 2

4

これを行う通常の方法は、環境変数を使用することです。テスト ファイルは、実行する必要があるかどうかを確認し、そうでない場合は簡単に実行しskip_allます。

例えば:

use strict;
use warnings;
use Test::More;

BEGIN {
   plan skip_all => "not running extended tests" unless $ENV{EXTENDED_TESTING};
};

# your slow tests here

done_testing();

通常、そのテストはスキップされます。ただし、EXTENDED_TESTING環境変数を"1"に設定すると、実行されます。

標準の環境変数には、、、EXTENDED_TESTINGおよびRELEASE_TESTINGが含まれNONINTERACTIVE_TESTINGます。NO_NETWORK_TESTINGも引っかかっています。

Test::Isなど、これを自動化するためのさまざまなモジュールがあり、より単純な構文を使用できます。

use strict;
use warnings;
use Test::More;
use Test::Is "extended";

# your slow tests here

done_testing();

他のアプリケーション固有のカテゴリがある場合は、いくつかの環境変数を自分で作成する必要があります。それらが一般的に役立つと思われる場合は、それらについてブログに投稿してください。おそらくそれらは普及し、標準の環境変数にもな​​るでしょう。

于 2014-09-03T00:22:55.747 に答える