Rhino Mockなどを使用してNLogログメソッドを模擬することは可能か簡単ですか?NLogログメソッドを模擬することは可能ですか?
答えて
仮想メソッドのみをモックできます。しかし、ロギング用のインタフェースを作成してNLogを使用して実装する場合は、依存性注入を使用できます。テストでは、疑似インタフェースを使用して、テスト中のシステムがロギングするものを記録しているかどうかを確認します。
public class SUT
{
private readonly ILogger logger;
SUT(ILogger logger) { this.logger = logger;}
MethodUnderTest() {
// ...
logger.LogSomething();
// ...
}
}
// and in tests
var mockLogger = new MockLogger();
var sut = new SUT(mockLogger);
sut.MethodUnderTest();
Assert.That("Expected log message", Is.Equal.To(mockLogger.LastLoggedMessage));
簡単な答えは「いいえ」です。コードを見ると、依存性注入はサポートされていません。特に、実装が難しいように見えない(一見して)ので、むしろ監視のようです。
プロジェクト内の唯一のインターフェイスは、COM相互運用オブジェクトや他のいくつかのものをサポートするためのインターフェイスです。メインのLogger
具象クラスはインターフェースを実装しておらず、仮想メソッドも提供していません。
自分でインターフェイスを提供するか、Moles/TypeMock /別の分離フレームワークを使用して依存関係を模擬することができます。その後install-package NLog.Interface
:Nugetを使用して
ILogger = new LoggerAdapter([logger-from-NLog]);
シンプルだが効果的。もし誰かが何をしたいのであれば、Githubプロジェクトはここにあります:https://github.com/uhaciogullari/NLog.Interface – killthrush
- 1. ユニットテストでアンドロイドサービスを模擬することは可能ですか?
- 2. typescriptデコレータを模擬することは可能ですか?
- 3. ADFSを模擬することは可能ですか?
- 4. ラムダ式を模擬することは可能ですか?
- 5. Django Behaveテストを模擬することは可能ですか?
- 6. 部分模擬からメソッドを '期待'することは可能ですか?
- 7. 既存のオブジェクトの一部を模擬することは可能ですか?
- 8. File.lsをエリクサーで擬似することは可能ですか?
- 9. アトリビュートディレクティブをAngular2 +で模擬することはできますか?
- 10. 模擬遅延の可能性はありますか?
- 11. このクラスを模擬するには?
- 12. mockitoで日付を模擬する方法は?ここで
- 13. 擬似乱数を分割することは可能ですか
- 14. Pythonスライスオブジェクトまたはサブクラスを模倣することは可能ですか?
- 15. Androidでのテストの許可を模擬する方法は?
- 16. PHPUnitでインタフェース実装を模擬することはできますか?
- 17. C/C++のGoインタフェースを模倣することは可能ですか?
- 18. angular2コンポーネントのテスト中に観測可能なストリームを模擬する方法は?
- 19. メソッドを模擬することができません
- 20. JMockがプライベートメソッドを模擬することができません
- 21. Mockitoはこのクラスを模擬することができません。JestClient
- 22. C#でこのようなクラスを模擬する方法は?
- 23. Windowsインストーラを模擬する
- 24. クラスを模擬する:Mock()かpatch()?
- 25. プロジェクト全体で機能を模擬する
- 26. 'out'パラメータを模擬する方法は?
- 27. AspectJクラスを模擬する方法は?
- 28. Nettyを模擬する方法は?
- 29. 辞書を模擬する方法は?
- 30. 模擬クラスからテストメソッドを実行することができません
詳細なポスト[依存性の注入でNLogを使用]を参照してくださいhttp://slf.codeplex.com/ – Jon
を見てみます(http://blog.tonysneed .com/2011/10/09/using-nlog-with-dependency-injection /)ポストはDIの例としてNInjectを使います。 –