私はVisual Studio 2008ソリューションでこの種の設定をしています。ライブラリを使用する1つのWCFサービスプロジェクト(app.configファイルにいくつかの設定エントリが必要なLib1)。私はLib1に関連するテストを含む単体テストプロジェクト(MSTest)を持っています。これらのテストを実行するには、テストプロジェクトにconfigファイルが必要です。 WCFServiceから自動的にロードする方法はないので、2つの場所で設定項目を変更する必要はありませんか?テストプロジェクトと設定ファイル
2
A
答えて
2
あなたのライブラリをapp.configファイルからコード全体に直接読み込むと、コードが脆くなり、テストするのが難しくなります。構成を読み込み、厳密に型付けされた方法で構成値を保管する責任を負うクラスを持つ方がよいでしょう。このクラスに、コンフィグレーションのプロパティを定義するインターフェイスを実装するか、プロパティを仮想化するかを選択します。次に、このクラスをモックすることができます(RhinoMockのようなフレームワークを使用するか、インターフェイスを実装する偽クラスを手作業で作成します)。コンストラクタを介して設定値にアクセスする必要がある各クラスにクラスのインスタンスを注入します。注入された値がnullの場合は、適切なクラスのインスタンスを作成するように設定します。
public interface IMyConfig
{
string MyProperty { get; }
int MyIntProperty { get; }
}
public class MyConfig : IMyConfig
{
public string MyProperty
{
get { ...lazy load from the actual config... }
}
public int MyIntProperty
{
get { ... }
}
}
public class MyLibClass
{
private IMyConfig config;
public MyLibClass() : this(null) {}
public MyLibClass(IMyConfig config)
{
this.config = config ?? new MyConfig();
}
public void MyMethod()
{
string property = this.config.MyProperty;
...
}
}
テスト
public void TestMethod()
{
IMyConfig config = MockRepository.GenerateMock<IMyConfig>();
config.Expect(c => c.MyProperty).Return("stringValue");
var cls = new MyLib(config);
cls.MyMethod();
config.VerifyAllExpectations();
}
関連する問題
- 1. 簡単なテストプロジェクトの設定の問題 - ExceljsとBrowserify
- 2. MVCとMolesテストプロジェクト
- 3. チームシティでnunitテストプロジェクトを実行するように設定する
- 4. MSテストプロジェクトの作業ディレクトリを設定する方法
- 5. ASP.NETアプリケーションのWeb設定を単体テストプロジェクトと共有できますか
- 6. ファイルのブートストラップファイルと設定ファイル
- 7. 設定ファイルとReltool
- 8. Robotium:.apkファイル用のテストプロジェクトの作成
- 9. 古い設定ファイルと新しい設定ファイルをマージする
- 10. UVM- 1つの設定ファイルとさまざまな設定ファイル(テストごとの設定ファイル)
- 11. テストプロジェクトのglobal.asaxにある設定メソッドを呼び出す方法は?
- 12. Javaサーブレット - ロガーと設定ファイル
- 13. 春のブートと設定ファイル
- 14. Ceph設定ファイルとceph-deploy
- 15. log4j設定ファイルとjarアプリケーション
- 16. Firebase .plist設定ファイルとセキュリティ
- 17. 設定ファイルと拡張子
- 18. pgbouncerとpostgres hba設定ファイル
- 19. 編集の設定ファイルと
- 20. bashとphpの設定ファイル
- 21. WatiNテストプロジェクトのベストプラクティス
- 22. テストプロジェクト変換
- 23. 静的ファイルとPHPファイルのNGINX設定
- 24. C#テストプロジェクトとC#クラスライブラリの違いプロジェクト
- 25. Sentinel設定ファイル
- 26. 設定ファイル
- 27. FitNesse設定ファイル
- 28. XML設定ファイル
- 29. OMNeT ++設定ファイル
- 30. ワードプレス設定ファイル
あなたは一つのファイル(または複数)内のすべての構成エントリを収集し、WCFサービスプロジェクトとテストプロジェクトの両方から、そのファイルを指すようにSectionInformation.ConfigSourceプロパティを使用することができます。 – charisk