2

単体テスト クラスがメイン プロジェクト (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 コンソールを個別にロードすると、正常に動作します。

[編集] Omar: はい、他のプロジェクトへの参照があります。これが私のソリューションエクスプローラーのスクリーンショットです

nUnit コンソールを (VS の外部ツールではなく) 個別に実行する必要があると思います。

4

4 に答える 4

2

Visual Studio が TargetPath マクロと TargetDir マクロを正しく展開しないというバグ レポートを見つけました。bin\ ではなく、obj\ ディレクトリに展開されます。

[更新] 問題/解決策は、ドキュメントのVisual Studio サポートセクションで実際に説明されています。「Target」マクロは obj\ を指しているため、そのままでは使用できません。Arguments フィールドで次の式を使用することになりました。

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)
于 2009-01-14T15:49:34.927 に答える
0

これはばかげているように聞こえるかもしれませんが、テストプロジェクトに他のプロジェクトへの参照を与えたことは明らかですか?

この種の問題に共通する他の問題は、別のプロジェクト/名前空間からアクセスできない内部クラスの使用です。

于 2009-01-14T15:46:10.847 に答える
0

アプリケーション自体またはアプリケーションの依存関係の 1 つが見つからないという問題がありますか? FileMon または Fusion Log Viewer を使用して、正確に何が失敗しているかを確認してみてください。問題はアプリ自体を見つけることではなく、別の依存関係を見つけることにある可能性があります。依存関係のコピー ローカルが True に設定されていることを確認します。

VisualStudio内でNUnit GUIをどのくらい正確に開始していますか? プロジェクトのプロパティで「外部プログラムの開始」を設定している場合、作業ディレクトリを指定するオプションが表示されます。これをテスト dll のビルド場所に変更する必要がある場合があります。

于 2009-01-14T22:51:59.130 に答える
0

また、アセンブリの出力パスが NUnit 構成で設定されているものに対応していることを確認してください。私は同じ設定をしていますが、「copy local = true」を設定する必要はありません

于 2009-01-14T15:53:42.453 に答える