मेरे पास बड़ी संख्या में टेस्ट केस हैं जो प्रत्येक टेस्ट पर निम्नलिखित एनोटेशन के साथ स्प्रिंग जुनीट सपोर्ट के साथ चलता है।स्प्रिंग + जुनीट टेस्ट कॉन्फ़िगर एनोटेशन वाले कस्टम एनोटेशन का निर्माण और उपयोग कैसे करें?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
प्रत्येक टेस्ट क्लास पर इन सभी टिप्पणियों को डालने के बजाय मैं एक कस्टम एनोटेशन बनाना चाहता हूं और इसका उपयोग करना चाहता हूं।
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface SpringJUnit4TestConfig {
}
लेकिन जब मैं इस कस्टम एनोटेशन का उपयोग करता हूं तो वसंत इंजेक्शन बिल्कुल नहीं हो रहा है।
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
मुझे यहां क्या याद आ रही है?
पीएस: लेकिन जुनीट की @ रूनविथ और स्प्रिंग्स @ ट्रान्सैक्शनल, @ कॉन्टटेक्स कॉन्फ़िगरेशन में सभी @ विरासत में हैं .. इसलिए मैंने सोचा कि इसे काम करना चाहिए। लेकिन अब के लिए मैं इसे एक काम के माध्यम से प्राप्त करते हैं। एक आधारित सार वर्ग बनाया और उन सभी एनोटेशन और उस बेस क्लास को विस्तारित परीक्षण मामलों में डाल दिया।
मुझे केवल @Target ({ElementType.TYPE} का उपयोग करना चाहिए) मुझे नहीं लगता कि आप इसे किसी फ़ील्ड या पैरामीटर में उपयोग करेंगे, या आप करेंगे? – Koitoer
आप सही हैं। यह कस्टम एनोटेशन केवल ElementType.TYPE पर आवेदन होना चाहिए। –
मैं भी वही करना चाहता था। प्रश्न और उत्तर पढ़ना मैंने एक एनोटेशन बनाया जो '@ रनविथ' को छोड़कर सभी कॉन्फ़िगरेशन का उपयोग करता है और अब तक अच्छा काम कर रहा है। मैं प्रत्येक टेस्टकेस कक्षा पर '@RunWith (SpringJUnit4ClassRunner.class) 'का उपयोग करता हूं। – ykesh