إضافة المزيد من المعلومات إلى ملف TestResult.xml من NUnit

StackOverflow https://stackoverflow.com/questions/44617

  •  09-06-2019
  •  | 
  •  

سؤال

أود أن أكون قادرًا على إضافة "رسالة" إلى اختبار الوحدة، بحيث تظهر فعليًا ضمن ملف TestResult.xml الذي تم إنشاؤه بواسطة NUnit.على سبيل المثال، يتم إنشاء هذا حاليًا:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" />
</results>

أود أن أكون قادرًا على الحصول على سمة إضافية (أو عقدة حسب الحالة)، مثل:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" message="Tested that some condition was met." />
</results>

الفكرة هي أن "الرسالة" أعلاه سيتم تعريفها بطريقة ما ضمن طريقة الاختبار نفسها (في حالتي، يتم إنشاؤها في وقت التشغيل).هل هناك خاصية في مكان ما أفتقدها حتى أتمكن من القيام بشيء كهذا؟

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

المحلول

قد يكون هذا غير مقصود، ولكن ماذا عن تسمية الاختبارات بحيث تشير إلى ما تختبره - إذًا قد لا تحتاج حتى إلى الرسالة.

إذا ثبت أنه ضروري للغاية، فأعتقد أنك ستحتاج إلى إنتاج مُختبر خاص بك والذي (من أعلى رأسي) يقرأ سمة إضافية من TestCase ويرفقها بالمخرجات.

نصائح أخرى

في إصدارات NUnit الأخيرة، يمكنك القيام بما يلي:

Assert.AreEqual(250.00, destination.Balance, "some message here");

حيث يمكن أن تكون "بعض الرسائل هنا" رسالة ثابتة أو رسالة تم إنشاؤها في وقت التشغيل وتخزينها في متغير سلسلة.لن تظهر هذه الرسائل إلا في المخرجات ولكن في حالة فشل التأكيد.ومع ذلك، عادةً ما تحتاج فقط إلى معلومات حول الاختبارات الفاشلة، لذا أوصي بإنشاء سلسلة عن طريق إضافة كل رسالة سابقة ثم استخدام متغير السلسلة هذا كرسالة في جميع التأكيدات الخاصة بك.يتيح لك هذا الحصول على جميع المعلومات التي تحتاجها من الاختبارات الفاشلة.

لا أستطيع رؤية أي شيء متاح في وقت التشغيل، ولكن هناك بعض الميزات التي قد ترغب في التحقق منها:ال وصف السمة و ملكية السمة تضيف نصًا إلى ملف إخراج XML.لسوء الحظ، يتم تعريفهما في وقت الترجمة.

يمكنك استخدام TestContext لكتابة أي رسالة تريدها بسهولة.هنا كيف يتم الإعداد.

كل اختبار من اختباراتي موروث من فئة testbase.يؤدي هذا إلى إزالة التعليمات البرمجية الزائدة.

[TestFixture]
public class TestBase
{

    public IWebDriver driver;

    //[OneTimeSetUp] and [OneTimeTearDown] go here if needed

    [SetUp]
    public void Setup(){
         driver = Shortcuts.SetDriver("my browser");
    }

    [TearDown]
    public void TearDown()
    {
        driver.Quit();
        Comment("@Result: " + TestContext.CurrentContext.Result.Outcome.ToString());
    }

    public void Comment(string _comment)
    {
        TestContext.Out.WriteLine(_comment);
    }
    public void Error(string _error)
    {
        TestContext.Error.WriteLine(_error);
    }

}

يمكنك رؤية الوظيفتين السفليتين تكتبان أي رسالة أو خطأ في TestContext المذكور.سيعمل هذا بشكل جيد مع الاختبارات القابلة للتوازي أيضًا.

يمكنني بعد ذلك استخدام تلك الفئة الأصلية لإعداد اختباراتي والكتابة إلى وحدة التحكم الخاصة بي.

//Role Management
public class RoleManagementTests : TestBase
{
    [TestCase]
    public void RoleManagement_7777_1()
    {
        Comment("Expected: User has the ability to view all roles in the system.");
        //Test goes here
    }
}

يمكنك الآن رؤية النتائج في الإخراج (Visual Studio) وفي ملف TestResult.xml باستخدام NUnit Console Runner.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top