intellij Idea + Testng: قم بتشغيل طريقة قبل كل اختبار في مجموعة
-
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 غير محددة".
ما الخطأ الذي افعله؟
المحلول
- القائمة ليست في حالة جيدة ، وهذا هو خطأ Intellij. قم بتشغيل الاختبار في سطر الأوامر أو مع Maven سيكون الأمر صحيحًا.
@BeforeMethod
و@AfterMethod
يبدو مكسورة مع المجموعات.- 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>