سؤال

يدعم الربيع Junit جيدًا على ذلك: مع RunWith و ContextConfiguration التعليقات التوضيحية ، تبدو الأشياء بديهية للغاية

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:dao-context.xml")

سيكون هذا الاختبار قادرًا على التشغيل في Eclipse & Maven بشكل صحيح. أتساءل عما إذا كانت هناك أشياء مماثلة ل testng. أنا أفكر في الانتقال إلى إطار "الجيل التالي" لكنني لم أجد مباراة للاختبار مع الربيع.

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

المحلول

إنه يعمل مع testng كذلك. لك اختبار يحتاج الفصل إلى تمديد واحدة من الفصول التالية:

نصائح أخرى

إليكم مثال عمل بالنسبة لي:

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestValidation extends AbstractTestNGSpringContextTests {

    public void testNullParamValidation() {
        // Testing code goes here!
    }
}

يعمل الربيع والاختبار جيدًا معًا ، ولكن هناك بعض الأشياء التي يجب أن تكون على دراية بها. بصرف النظر عن التصنيف الفرعي AbstractTestNgSpringContextTests ، يجب أن تكون على دراية بكيفية تفاعله مع توضيحات الإعداد/seatdown القياسية.

Testng لديه أربعة مستويات من الإعداد

  • BeForsuite
  • قبل الاختبار
  • قبل الفصل
  • Beforemethod

الذي يحدث بالضبط كما تتوقع (مثال رائع لتوثيق واجهات برمجة التطبيقات ذاتية). كل هذه لها قيمة اختيارية تسمى "DepressSonMethods" والتي يمكن أن تأخذ سلسلة أو سلسلة [] ، وهو اسم أو اسم (أسماء) الأساليب في نفس المستوى.

تحتوي فئة AbstractTestNgSpringContextTests على طريقة مشروحة beforeclass تسمى SpringTestContextPreparetestinstance ، والتي يجب عليك تعيين طريقة الإعداد الخاصة بك للاعتماد عليها إذا كنت تستخدم فئة تلقائية في ذلك. بالنسبة للطرق ، لا داعي للقلق بشأن التلقائي التلقائي ، لأنه يحدث عندما يتم إعداد فئة الاختبار في ذلك قبل طريقة الفصل.

هذا فقط يترك مسألة كيفية استخدام فئة مرصعة بالتوقيت التلقائي بطريقة مشروحة مع Beforesuite. يمكنك القيام بذلك عن طريق الاتصال يدويًا بـ SpringTestContextPreparetestinstance - في حين أنه لم يتم إعداده افتراضيًا للقيام بذلك ، فقد فعلت ذلك عدة مرات بنجاح.

لذلك ، لتوضيح نسخة معدلة من مثال Arup:

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestValidation extends AbstractTestNGSpringContextTests {

    @Autowired
    private IAutowiredService autowiredService;

    @BeforeClass(dependsOnMethods={"springTestContextPrepareTestInstance"})
    public void setupParamValidation(){
        // Test class setup code with autowired classes goes here
    }

    @Test
    public void testNullParamValidation() {
        // Testing code goes here!
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top