سؤال

وأنا على التوالي NUnit مع المشروع باسم AssemblyTest.nunit. ويدعو اختبار التجميع آخر والذي يستخدم التجمع log4net. هذا هو استخدام nunit النسخة 2.4.3 مع .NET Framework 2.0.

في 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)

هل هناك طريقة لإصلاح هذا دون إعادة تسمية ملف التكوين إلى 'AssemblyTest.config؟

هل كانت مفيدة؟

المحلول

وإنشاء ملف التكوين منفصل لlog4net مع log4net العنصر الجذر.

في TestFixtureSetup إنشاء كائن FileInfo لهذا الملف التكوين وإعطاء بانها حجة لlog4net.Config.XmlConfigurator.Configure ().

نصائح أخرى

وكان لي نفس المشكلة لأنني تنس أن تضيف <م> log4net تعريف في configSections العنصر.

ولذا، إذا كنت تريد أن تضع <م> log4net -elements في app.config، تحتاج لتشمل <م> configSections العنصر (الذي يحكي حيث <م> log4net تعرف -elements) في الجزء العلوي من ملف التكوين.

وانها محاولة من هذا القبيل:

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

وأنا لا أعرف لماذا يا رفاق المحاصرين في ملفات التكوين، لnunit إذا كنت ترغب في رؤية السجلات التي تعمل في إطار الإخراج النص في عداء اختبار 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