문제

나는 AssemblyTest.nunit이라는 프로젝트로 Nunit을 운영하고 있습니다. 이 테스트는 Log4Net 어셈블리를 사용하는 다른 어셈블리를 호출합니다. 이것은 .NET 2.0 프레임 워크와 함께 Nunit 버전 2.4.3을 사용합니다.

TestFixTuresEtup에서 나는 log4net.config.xmlconfigurator.configure () 호출하고 다음 오류가 발생합니다.

System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section log4net. (C:\path\to\assembly.dll.config line 7)

config 파일을 'esitchblyTest.config'로 바꾸지 않고이 문제를 해결하는 방법이 있습니까?

도움이 되었습니까?

해결책

루트 요소 log4net으로 log4net에 대한 별도의 구성 파일을 만듭니다.

TestFixTuresEtup 에서이 구성 파일에 대한 fileInfo 객체를 생성하고 log4net.config.xmlconfigurator.configure ()에 인수로 제공합니다.

다른 팁

추가하는 것을 잊었 기 때문에 같은 문제가있었습니다. log4net 정의 구성 요소.

그래서 당신이 넣고 싶다면 log4net-app.config에 대한 요소를 포함시켜야합니다. 구성 요소 (어디에 있는지 알려줍니다 log4net-구성 파일의 상단에서 -요소는 정의됩니다).

다음과 같이 시도하십시오.

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
  ...
  </log4net>
</configuration>

Nunit Test Runner의 텍스트 출력 창에서 로그가 실행되는 것을보고 싶다면 NUNIT의 경우 구성원 파일에 갇힌 이유는 모르겠습니다.

BasicConfigurator.Configure();

최상의 포인트이 줄을 추가하여 테스트 클래스의 생성자입니다.

예를 들어

[TestFixture]
    public class MyTest
    {
        log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyTest));

        public MyTest()
        {
            BasicConfigurator.Configure();
        }

        [SetUp]
        public void SetUp()
        {
           log.Debug(">SetUp");               
        }

        [TearDown]
        public void TearDown()
        {
            log.Debug(">TearDown");
        }

        [Test]
        public void TestNothing()
        {
            log.Debug(">TestNothing");
        }
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top