私はNUnitを使用してC#コードをテストしており、これまでユニットテスト(高速実行テスト)と統合テスト(長時間実行)を別々に、別々のプロジェクトファイルに保存してきました。単体テストと統合テストの両方を行うためにNUnitを使用します。テストを分類できるように、NUnitが提供するcategory属性に気づきました。これは疑問を投げかけます、私はそれらを一緒に混ぜて、それらを区別するために単にcategory属性を使うべきですか?
6 に答える
それらを分離するのがそれほど難しくない場合は、今すぐ分離してください
単体テストは早い段階で頻繁に (たとえば、何かを変更するたびに、チェックイン前、チェックイン後に) 実行し、短時間で完了する必要があります。
統合テストは定期的に (たとえば、毎日) 実行する必要がありますが、完了までにかなりの時間とリソースがかかる場合があります
したがって、それらを別々に保つことが最善です
通常、統合テストは UnitTests よりもはるかに長い時間がかかるため、可能であればそれらを分離してください。おそらく、プロジェクトが成長し、非常に多くのテストが必要になり、統合テストを除くすべてのテストに短時間しかかからず、できるだけ頻繁に UnitTests を実行したい場合があります...
単体テストと統合テストに別々のプロジェクトを使用すると、プロジェクト内にトップレベルのアーティファクトが多すぎる傾向があることがわかりました。私たちは TDD ですが、開発中のコードは私のプロジェクト構造のトップレベルの少なくとも半分に値するはずだと思います。
現在お使いの方法をそのままお使いいただけます。それは意見の問題であり、テスト方法全体を再構築する必要はありません。
[Category] の背後にある元々の動機は、あなたが言及した問題を解決することでした。より広範なテスト スイートを作成することも意図されていましたが、それはあなたが行っていることのようなものです。
【カテゴリ】は気をつけてください。すべてのテスト ランナーが、NUnit GUI と同じようにサポートしているわけではありません (または、しばらくアップグレードしていませんでした)。以前は、一部のランナーは、属性がクラス自体にある場合は無視するか、すべて一緒に無視していました。ほとんどは現在動作しているようです。
それほど重要ではないと思いますが、分離、自動化が非常に簡単になるため、それらを分離する方が良いアイデアのように思えます。また、カテゴリ機能は優れていますが、使いやすさの観点からはそれほど良くありません。