nUnitテストを別のプロジェクトに移行するのに助けが必要
-
22-07-2019 - |
質問
単体テストクラスがメインプロジェクト(TestAccount)の一部である場合、すべて正常に動作します。
ユニットテストについて読んだすべての記事では、テストを別のプロジェクトに置くことをお勧めしています。そのため、...
- 別のプロジェクトを追加しました (TestAccount.UnitTests)をソリューションに追加
- 単体テストクラス(AccountTests.vb)をTestAccount.UnitTestsに移動しました
- TestAccount.UnitTestsの参照をTestAccountに追加しました(copy local = true)
ソリューションは警告なしでコンパイルされます。ただし、nUnitはメインプロジェクトにアクセスできず、各テストで次のエラーが発生します。
System.IO.FileNotFoundException:ファイルまたはアセンブリ「TestAccount、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null」またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。
何が間違っているのですか?
(GACに追加するまでnunit.framework.dllで同様の問題が発生していました)
ソリューションエクスプローラーのスクリーンショットhttp://img440.imageshack.us/img440/4862 /nunitsolutionexploreree3.jpg
Visual Studio 2005
.NET 2.0
nUnit 2.4.8(.NET 2.0バージョン)
[編集] Visual Studioから(外部コマンドとして)nUnitを実行する場合にのみ、この問題が発生します。 nUnitコンソールを個別にロードすると、正常に機能します。
[編集]オマー:はい、他のプロジェクトへの参照があります。 ソリューションエクスプローラーのスクリーンショット
(VSの外部ツールではなく)nUnitコンソールを個別に実行する必要があると思います。
解決
バグレポートを見つけましたつまり、Visual StudioはTargetPathおよびTargetDirマクロを誤って展開します。それらはbin \ではなくobj \ディレクトリに展開します
[更新]問題/解決策は、実際に Visual Studioサポートで説明されています。ドキュメントのセクション。 「ターゲット」マクロはobj \を指しているため、すぐに使用することはできません。引数フィールドで次の式を使用することになりました:
$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)
他のヒント
これはばかげて聞こえるかもしれませんが、テストプロジェクトに他のプロジェクトへの参照を与えたことは明らかです。
この種の問題に共通する他の問題は、別のプロジェクト/ネームスペースからアクセスできない内部クラスの使用です。
また、アセンブリ出力パスがNUnit構成で設定されたものに対応していることを確認してください。私は同じ設定を持っていますが、「copy local = true」を設定する必要はありません
問題は、アプリケーション自体、またはアプリケーションの依存関係の1つを見つけられないことですか? FileMonまたはFusion Log Viewerを使用して、正確に何が失敗しているかを確認してください。問題は、アプリ自体を見つけることではなく、別の依存関係を見つけることにある可能性があります。依存関係のCopy LocalがTrueに設定されていることを確認してください。
VisualStudioでNUnit GUIをどのくらい正確に起動していますか? 「外部プログラムを起動」を設定している場合は、プロジェクトのプロパティの下に、作業ディレクトリを指定するオプションがあります。これをテストdllのビルド場所に変更する必要がある場合があります。