2009-07-13 6 views
3

リフレクションを使用してクラスのインスタンスを動的に作成していますが、ユニットテストでこれを実行しようとしているときを除いて、うまく動作します - 私はMSテストフレームワークを使用しています。
"ファイルまたはアセンブリ 'Assy'またはその依存関係の1つを読み込めませんでした。指定したファイルが見つかりません"
私はdllファイルをbin \ debug binにコピーしました。単体テストプロジェクト - これは正しい場所ではありませんか?Unit/Integrationテストでのリフレクションの問題

string assyName = "Go.Data.SqlServer"; 
string typeName = "GoMolaMola.Data.SqlServer.DataProviderFactory"; 

Assembly assy = Assembly.Load(assyName); 
object o = assy.CreateInstance(typeName); 

私は単体テストには新しく、どんな助けもありがたいです。 DLLをロードするときには、動的にユニットテストから必要とされている。このような場合のために

おかげ

答えて

4

ユニットテストを実行ところbin/DebugフォルダがないのVisual StudioはTestResultsフォルダ(通常は最後の5つのテストランを保つ、とそれぞれにあなたのユニットテストのコンパイルの出力をコピーしますフォルダ名に埋め込まれたタイムスタンプ)を読み込み、そこでユニットテストを実行します。

そのフォルダに.DLLが必要な場合は、テストプロジェクトからの.DLLへの参照を作成するか、DeploymentItem属性を使用して、項目がテストディレクトリにコピーされていることを確認します。

+0

あなたは正しいです、binフォルダからは実行されません。 テストプロジェクトからリファレンスを追加しました。 ご協力いただきありがとうございます – iammaz

0

は、私がそのディレクトリにコピーDLLをすることをビルド後のイベントを持っています。私はそれを行う別の方法があるかどうかを知りたいです。それは私のために働いていた唯一の方法でした:(

ポストで、右クリックして、プロジェクトの上にビルドイベントに移動し、コピーを配置、このようなビルド後を編集するにはイベントコマンドラインビルドします。

copy $(TargetPath) "$(SolutionDir)yourDir\$(TargetFileName)" 
1

私もこの問題に直面し、いずれも上記の答えは私のために働いた:( 1.プロジェクトへの参照を追加するDeploymentItem属性も 3.追加動作しません追加私のため 2を動作しません。ユニットテストエンジンがタイムスタンプ....と毎回新しいアウトディレクトリを作成し、その新しいディレクトリのそのアセンブリを検索しているので、ビルド後のコマンドもできません。

しかし、私はこれを解決することができましたデプロイメントを有効にし、指定されたファイルをローカルテスト設定 - >デプロイメントに追加することによって

関連する問題