سؤال

يوضح الاختبار التالي أن حبة الاختبار هذه تتم تهيئة مرتين بحلول الربيع. آمل أن يتمكن شخص ما من إخباري لماذا هذا ، لأنه يجب أن يكون مرة واحدة فقط. هذا الاختبار:

import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {} )
public class TestAfterPropsSet implements InitializingBean {

private static final Logger logger = Logger.getLogger(TestAfterPropsSet.class);

@Test
public void test1() {
    logger.debug("Test1");
}

@Test
public void test2() {
    logger.debug("Test2");      
}

public void afterPropertiesSet() throws Exception {
    logger.debug("Bean Initialized");       
}
} // end class

ها هو ملف الفول:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

وهنا الإخراج:

2009-10-13 21:20:04,393 [TestAfterPropsSet.java 26] DEBUG - Bean Initialized
2009-10-13 21:20:04,393 [TestAfterPropsSet.java 17] DEBUG - Test1
2009-10-13 21:20:04,393 [TestAfterPropsSet.java 26] DEBUG - Bean Initialized
2009-10-13 21:20:04,393 [TestAfterPropsSet.java 22] DEBUG - Test2
هل كانت مفيدة؟

المحلول

انها ليست اتفاقية الربيع. يجب أن تتابع اتفاقيات Junit ، ويجب أن يتم التهيئة أو التفكيك على مستوى مجموعة Suite في BeboReClass و AfterClass وفقًا لذلك ، أو يمكنك استخدام Autowire والسماح لـ Spring بمعالجة نطاق الكائن.

سيتم بناء جناح جديد لكل اختبار. هذا أكثر وضوحًا في JUNIT3 حيث كان عليك إنشاء جناح جديد باستخدام اسم اختبار محدد.

ألق نظرة على جافادوك:

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

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

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