[英]Log4net not working with NUnit tests
所以我做了一些環顧四周。 我發現大多數線程似乎與想要在實際測試中運行log4net的人有關。 意味着他們想要在測試類中添加日志條目。 我不想從我的實際測試中獲得日志條目。 但是我確實希望從我正在測試的代碼中獲得預期的日志條目。 這是我第一次使用Log4net。 如果我自己運行代碼,則日志條目有效。 如果運行測試,則沒有日志條目。 我想它沒有正確初始化,或者我的UnitTest中沒有正確設置log4net(可能是在appconfig或程序集中?)。 這是一個MVC 5應用程序。 這是一個基本的例子。
Nunit測試(基礎):
namespace MyUnitTests
[TestFixture]
public class MyTestClass
{
[Test]
public void MyTest
{
//arrange
var testVar = @"string";
//act
MyProjectClass.Method(testVar);
//assert something
}
}
所以在MyProject中,我有(基本知識):
public class MyProjectClass : Controller
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyProjectClass));
public static void Method(string myString)
{
//does whatever
log("added value");
}
因此,我顯然已將其簡化了討論。 但是,當我運行實際測試時,我的測試通過了,其值和結果均應達到預期。 我只是從未在日志中看到我剛剛測試過的方法的日志條目。 我確定我缺少簡單的東西。 任何幫助將不勝感激。 謝謝!
如果在主項目的app.config中查找,則應該看到log4net config部分,該部分指定日志文件的位置。
首先,您需要像這樣將log4net添加到您的<configSections>
:
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" /> </configSections>
然后可以將<log4net>
部分添加到<configuration>
標記。 有關此文檔,請參見此處 。
我只想添加以上答案。 除了在UnitTest中將appconfig設置為與Application webconfig相同(如果需要,可以編輯日志文件位置的值)之外,還需要添加程序集條目,就像已經為應用程序添加一樣(將web.config更改為app .config)。
//logger
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config", Watch = true)]
您還需要在單元測試中初始化記錄器(至少我已經這樣做)。 因此,基本上,如果希望我登錄要測試的方法來啟動測試,則可以在我的測試安排中添加它。 在您的安排或設置中為您的測試課添加類似以下內容:
[Test]
public void MyTest
{
//arrange
log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyTestClass));
log4net.Config.XmlConfigurator.Configure();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.