数週間前、私は MEF (ComponentModel) の流行に飛び乗り、今では多くのプラグインや共有ライブラリに使用しています。全体として、私の側の頻繁な間違いを除けば、それは素晴らしいものでした.
とにかく、私のアプリは問題なく動作していますが、MEF 関連のコード変更により、自動ビルドが失敗しました。テストしていたモジュールが MEF によって読み込まれる必要がある他のモジュールに依存していたという単純な理由で、単体テストのほとんどが失敗していました。MEF をバイパスし、これらのオブジェクトを直接インスタンス化することで、これらの状況を回避しました。
言い換えれば、MEFを介して次のようなものになります
[Import]
public ICandyInterface ci { get; set; }
と
[Export(typeof(ICandyInterface))]
public class MyCandy : ICandyInterface
{
[ImportingConstructor]
public MyCandy( [Import("name_param")] string name) {}
...
}
しかし、私の単体テストでは、私はただ使用します
CandyInterface MyCandy = new CandyInterface( "Godiva");
さらに、CandyInterface にはデータベースへの接続が必要ですが、単体テスト フォルダーにテスト データベースを追加するだけで回避でき、NUnit ですべてのテストにそれを使用します。
さて、この状況に関する私の質問は次のとおりです。
- これは悪い方法ですか?
- [セットアップ]でパーツを組むことをお勧めしますか?
- 単体テストでモックを使用する方法をまだ学習していません。これは、基礎となるデータベース接続を (何らかの方法で) モックして、ダミー データを返すだけで、実際にはデータベースを必要としない場合の良い例ですか?
- 以前にこのようなことに遭遇したことがある場合は、その経験と問題を解決した方法を教えていただけますか? (または、これをコミュニティ wiki に入れる必要がありますか?)