intellij Idea + Testng: قم بتشغيل طريقة قبل كل اختبار في مجموعة

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

  •  25-09-2019
  •  | 
  •  

سؤال

أنا أتعلم استخدام testng لفكرة Intellij 9.

بقدر ما أفهم ، إحدى الطرق لوضع اختبار في مجموعة تسمى name هو التعليق عليه @Test(group = "name"). لتشغيل طريقة قبل كل اختبار ، قم بتعليقه مع @BeforeMethod.

في إعداد الاختبار الخاص بي ، أريد تشغيل طريقة قبل كل اختبار فقط في مجموعة معينة. لذلك هناك طريقة beforeA الذي يعمل قبل كل اختبار في المجموعة A, ، طريقة beforeB الجري قبل كل B اختبار وهلم جرا.

رمز المثال:

public class TestExample
{
    @BeforeMethod(groups = "A")
    public void beforeA()
    {
        System.out.println("before A");
    }

    @BeforeMethod(groups = "B")
    public void beforeB()
    {
        System.out.println("before B");
    }

    @Test(groups = "A")
    public void A1()
    {
        System.out.println("test A1");
    }

    @Test(groups = "A")
    public void A2()
    {
        System.out.println("test A2");
    }

    @Test(groups = "B")
    public void B1()
    {
        System.out.println("test B1");
    }

    @Test(groups = "B")
    public void B2()
    {
        System.out.println("test B2");
    }
}

أتوقع الناتج مثل

before A
test A1
before A
test A2
before B
test B1
before B
test B2

لكني أحصل على ما يلي:

before A
before B
before A
before B
test A2
before A
before B
before A
before B
test B1

===============================================

test B2

===============================================
Custom suite
Total tests run: 4, Failures: 0, Skips: 0
===============================================

وقد سلطت Idea Intellij الضوء على جميع التعليقات التوضيحية الخاصة بي مع الرسالة "المجموعة A غير محددة" أو "المجموعة B غير محددة".

ما الخطأ الذي افعله؟

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

المحلول

  1. القائمة ليست في حالة جيدة ، وهذا هو خطأ Intellij. قم بتشغيل الاختبار في سطر الأوامر أو مع Maven سيكون الأمر صحيحًا.
  2. @BeforeMethod و @AfterMethod يبدو مكسورة مع المجموعات.
  3. Intellij تذكر المجموعات التي استخدمتها من قبل ، إذا كنت تستخدم مجموعة لم يتم تذكرها بعد ، فستظهر الرسالة "Group X غير محددة". فقط بريس البديل + يدخل على مجموعة غير محددة لتذكرها.

موارد :

نصائح أخرى

طلبت من Intellij إصلاحه. يرجى التحقق من المشكلة: http://youtrack.jetbrains.net/issue/idea-67653نحن بحاجة إلى التصويت لصالحها حتى تقوم JetBrains بإصلاحه

@BeforeMethod(groups =...) ليس من المفترض أن تعمل قبل كل طريقة في مجموعة. سيتم تشغيله قبل كل طريقة في الفصل. الفرق هو ، سوف ينتمي فقط إلى مجموعة معينة ، لا شيء أكثر من ذلك. انظر المستندات

كما ذكر Teh emprahbahbahethod لا يفترض أن يعمل قبل كل طريقة تنتمي إلى نفس المجموعة.

من أجل تحقيق ذلك ، عليك تكوينك testng.xml بشكل صحيح. لمخرجاتك المتوقعة يجب أن تبدو كذلك

<suite....>
 <test name="A">
  <groups>
    <run>
   <include name="A"/>
    </run>
  </groups>
  <classes>
   <class name="...TestExample"/>
  </classes>
 </test>
 <test name="B">
  <groups>
    <run>
   <include name="B"/>
    </run>
  </groups>
  <classes>
   <class name="...TestExample"/>
  </classes>
 </test>
</suite>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top