2016-06-16 16 views
0

MEFを使用してプラグインをロードするアプリケーションでユニットテストを使用しようとしています。ユニットテストとMEFのエラー

コードの行:

var dirCatalog = new DirectoryCatalog(
    Path.Combine(
     Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), 
     "Plugins")); 

は、デバッグまたはリリースモードで完全に正常に動作します。

しかし、テストを実行している場合やテストをデバッグしている場合は、テストを終了するだけです。例外は検出されませんでした。何もない。

パスが正しいことを確認しました。

答えて

0

私は、ビジネスロジックライブラリがMEFを大量に使用し、いくつかの単体テストを含むデスクトップアプリケーションを持っています。私はAppDomain.BaseDirectoryを使用して、私のカタログを構築しました:

var location = AppDomain.CurrentDomain.BaseDirectory; 
var dirCatalog = new DirectoryCatalog(Path.Combine(location, "Plugins")); 

それはデスクトップアプリケーションにとWebアプリケーションの両方で実行する必要がある場合は、AppDomain.RelativeSearchPathを使用してみてください:

var location = AppDomain.CurrentDomain.RelativeSearchPath ?? 
       AppDomain.CurrentDomain.BaseDirectory; 
var dirCatalog = new DirectoryCatalog(Path.Combine(location, "Plugins")); 
+0

問題はパスを見つけることはありません。ユニットテストには正しいパスがあります。これは、新しいDirectoryCatalogへの呼び出しです(...それをクラッシュします。例外はありません。フィードバックはありません。 –

+0

@ JorgeOtero-Millan私は過去にMEFでいくつかの問題を見てきました。 –

+0

同じマシン上のすべてのものは、それは単なるWindowsフォームアプリケーションです。これはまた、いくつかのC++ DLLを使用するDLLからいくつかのプラグインをロードします...そうかもしれません手掛かり... –