[英]How to unit test logging into log4net using C#
我需要測試消息是否正確登錄到 log.net。
public bool load(string fileName) {
if (File.Exists(fileName))
return true;
Logger.Error("file does not exist");
return false;
}
在我的測試文件中,我有這個:
[Test Class]
public FileTest {
private File file;
[TestInitialize]
public void Setup() {
file = new File();
}
[TestMethod]
public void ConstructorSuccessedTest() {
Assert.IsNotNull(file);
Assert.IsNotNull(File.Logger);
}
}
我需要另一種測試方法來了解Logger.Error()
中的消息是否正確登錄到 log.net。
我不知道從哪里開始。
我找到了答案:
[TestMethod]
public void LoggerIngo()
{
var appender = new log4net.Appender.MemoryAppender();
log4net.Config.BasicConfigurator.configure(appender);
var fileLoad = file.load("file.xlsx");
var logEntries = appender.GetEvents();
Assert.AreEquals("file does not exist", logEntries[0].MessageObject.ToString());
}
我不熟悉 log.net,但我認為您可以使用 Logger 的接口。
如果將 Logger 實例添加到構造函數,則可以添加 ILog 的 Mock。 只需斷言該模擬即可檢查消息。
private static readonly log4net.Ilog _logger;
public Cut (log4net.ILog logger){
_logger = logger;
}
public bool load(string fileName) {
if (File.Exists(fileName))
return true;
_logger.Error("file does not exist");
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.