いつものように Perl プロジェクト用のテスト スイートがlib
あり、ディレクトリとt
ディレクトリが含まれています。のテストはt
、サブディレクトリによって構造化されています。だから私はそれらを使用して実行します:
prove -Ilib -r t/
これまでのところ特別なことは何もありません.Perlでテストするための非常に標準的な方法です.
これが標準的なテスト方法であることが前提であるため、次のことが当てはまることを確認したいと思います。
「で実行するprove -r
とt
、テストする必要があるすべてのものがテストされました」。
これは非常に重要です。そうしないと、本当にすべてのテストを呼び出して問題がないことを確認できないからです。誰かが上記を呼び出すと、知らないうちに、利用可能なテストの一部を呼び出し、一部を残してしまう可能性があります。非常に厄介です...実行されていないテストは役に立ちません。開発者がすべてのテストを呼び出すのは、できるだけ簡単で予測可能でなければなりません! テストスーツの残りの部分を実行する方法を調べる必要がある場合、これは悪いことです。あなたはそれについて知らないかもしれませんし、とにかくそれをしないかもしれません。
ここで私の問題が発生します。親切にツールを提供するpgTAPpg_prove
を使用して、いくつかのテストを統合する必要があります。ここで、テストを行うために 2 つのコマンドを作成する必要があります。実行prove -Ilib -r
に加えて、例えばのようなものも実行する必要がありますpg_prove -S schema=customerX -U dbuser -d dbname t/pgTAP/*.sql
。テストを自動的に呼び出す場合、問題はそれほど大きくありませんcron
。しかし、私たち怠惰な開発者が忙しい日々の中ですべてのテストを実行する可能性は本当に低くなります。
prove
したがって、それらのテストも含めるような方法でテストを実装するための最良のアプローチは何でしょうか。.t
全体をラップするいくつかのファイルを作成する必要があるということですか (そしてどのように?)? Harness
CPANのすべてのものでできるトリックはありますか? test_all.sh
上記の仮定を破ったとしても、両方のコマンドを含むルートディレクトリの単純なものが最善の仕事をするでしょうか?
つまり、私の質問は次のとおりです。pgTAP を含むすべてのテストを実行できますprove
か? そうでない場合、問題を解決するためのベスト プラクティスはありますか?
どうもありがとう。