1

VS2008 で実行またはデバッグを使用して単体テストを実行すると、VS はテスト プロジェクトのすべての依存関係、つまり単体テストでテストしているプロジェクトを再構築することを要求するのはなぜですか?

変更されていない場合もあります。単体テストの一部を修正しただけです。または、アセンブリの 1 つを変更したのに、すべてのアセンブリを再構築することを主張しているのかもしれません。

単体テスト プロジェクトには、他のプロジェクトへの通常のプロジェクト参照があります。

これにより、可能な限り効果的に TDD を実行する能力が低下しているため、ご提案はありがたく受け取りました。

ありがとう!

4

1 に答える 1

1

OK、少なくとも問題の原因と、やや不十分な回避策を見つけました!!

まず、新しい単体テスト プロジェクトを追加し、メイン ソリューションから単一のプロジェクト参照を追加しました。私のデータ (ビジネス エンティティ) プロジェクトが、私が説明している問題に悩まされていることを発見しました。他のすべてのアセンブリは何らかの形でデータ プロジェクトに依存しているため、1 つが再コンパイルされると他のすべてのアセンブリが影響を受けるという事実があります。

なぜそれは常に再コンパイルするのですか? それはEntity Frameworkと関係があります。空のプロジェクトを作成し、それに空の EF モデルを追加します。変更していなくても、常に再コンパイルされます。これにより、おそらくデータ アセンブリのメタデータが変更されたため、依存関係が再コンパイルされるというノック オン効果が生じます。

私が見つけた回避策は、プロジェクト参照を追加するのではなく、直接アセンブリ参照をデータ アセンブリに追加することです。欠点は、たとえば VS2008 の [定義に移動] を実行して型に直接移動できないことですが、その特定のアセンブリでそれを行うことはめったにないため、大きな問題ではありません。

これを行うことで、単一の単体テストを実行するためだけのビルド時間が約 20 秒から 7 秒に短縮されました。これは、毎日何十もの単体テストを作成している場合に大きな違いをもたらします!

なぜEFモデルがこれを行うのかについて誰かが何か考えを持っているなら、私は本当に興味があります...

于 2009-11-13T02:11:46.850 に答える