मैं सिर्फ अगर मैं इस config सब कुछ ठीक काम करता है के साथ एप्लिकेशन को चलाने मेरी स्प्रिंग विन्यासस्प्रिंग की संपत्ति प्लेसहोल्डर JUnit साथ काम नहीं करता टेस्ट
<context:property-placeholder location="classpath:/config/config.properties" />
में एक संपत्ति प्लेसहोल्डर कॉन्फ़िगर किया गया। हालांकि अगर मैं यूनिट परीक्षण चलाने की कोशिश करता हूं, तो FileNotFoundException
की वजह से परीक्षण ApplicationContext
लोड करने में विफल रहता है। ऐसा तब होता है जब मैं एक्लिप्स से परीक्षण चलाने के साथ-साथ मैवेन के माध्यम से परीक्षण चलाते समय भी कोशिश करता हूं।
मैंने भी उसी परिणाम के साथ PropertyPlaceholderConfigurer
को कॉन्फ़िगर करने का प्रयास किया।
ऐसा लगता है के रूप में फ़ाइल classpath स्थान में नहीं है, भले ही परीक्षण कक्षाओं
@ContextConfiguration("classpath:/config/spring-config.xml")
फ़ाइलें एक ही फ़ोल्डर में हैं के साथ एनोटेट रहे हैं और यह एक्सएमएल विन्यास पाता है।
मैंने पहले से ही विभिन्न पथों का उपयोग करने की कोशिश की है: classpath:config/config.properties
और क्लासपाथ उपसर्ग के बिना, सभी काम नहीं कर रहे हैं। फ़ाइल उपसर्ग के साथ एक पूर्ण पथ काम करता है, लेकिन यह एक अच्छा समाधान नहीं है।
क्या संपत्ति-प्लेसहोल्डर परीक्षण के साथ काम करने का कोई तरीका है? एक समाधान जो मैंने पहले ही पाया है वह एक्सएमएल में डिफ़ॉल्ट गुण प्रदान करके स्थान को ओवरराइड करना है। क्या कोई अन्य समाधान है? या मैं इस समस्या के साथ अकेला हूँ?
मेरा परीक्षण वर्गों इस तरह तरह का दिखेगा:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:/config/spring-config.xml")
@Transactional
public class JpaImageDaoTest {
@Autowired
private ImageDataDao imageDataDao;
@Test
public void testFindById() {
Image anImage = new Image();
anImage.setData(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 });
imageDao.save(anImage);
Image image = imageDao.findById(imageData.getId());
assertNotNull(image);
assertEquals(anImage, image);
}
और संदर्भ एक्सएमएल इस तरह दिखता है:
<context:property-placeholder location="classpath:/config/config.properties" />
<bean id="imageScalingService" class="service.image.ImageScalingService">
<property name="maxWidth" value="${scaling.thumbnail.maxWidth}" />
<property name="maxHeight" value="${scaling.thumbnail.maxHeight}" />
</bean>
मैं अंत में एक समाधान/वैकल्पिक हल
ऐसा लगता है पाया जैसे वसंत एक्सएमएल और जावा कॉन्फ़िगर को मिश्रित करना पसंद नहीं करता है या कम से कम यह इस मामले में काम नहीं करता है। मैंने 4.0.9 के साथ इसका परीक्षण किया।
मेरे @ContextConfiguration
में एक एक्सएमएल फ़ाइल का उपयोग करने के बजाय मैंने एक जावा कॉन्फ़िगर क्लास का संदर्भ दिया जिसमें @PropertySource
एनोटेशन शामिल है।
@Configuration
@PropertySource("test.properties")
@ImportResource("webservices.xml")
public class TestPlaceholderConfig {
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestPlaceholderConfig.class, WebServiceConfig.class})
public class MyTest {
}
अजीब बात webservices.xml भी WebServiceConfig वर्ग के लिए एक सेम परिभाषा शामिल है। हालांकि, वसंत जावा कॉन्फ़िगर में परिभाषित बीन को खोजने में असमर्थ है। इस प्रकार मुझे टेस्ट क्लास के संदर्भ कॉन्फ़िगरेशन में WebServiceConfig.class जोड़ना पड़ा।
क्लासपाथ *: config.properties के बारे में कैसे करें? –
मैं बिना किसी समस्या के परीक्षणों में propertyPlaceholder का उपयोग कर रहा हूं। आपकी समस्या विवरण में कुछ याद आना चाहिए। Org.springframework के लिए INFO लॉगिंग सक्षम करने का प्रयास करें, यह लोड की गई संदर्भ फ़ाइलों और प्रॉपर्टी फ़ाइलों को दिखाता है। – mrembisz
मैंने क्लासपाथ * की कोशिश की लेकिन यह परीक्षण में या तो काम नहीं कर रहा है। यह सिर्फ 0 संसाधनों के साथ संसाधन सरणी सेट करता है। मैंने लॉगिंग को डीबग करने के लिए भी सेट किया है और यह नहीं कहता है कि यह प्रॉपर्टी फ़ाइल लोड करता है जैसा कि एप्लिकेशन शुरू करते समय करता है। – suicide