java - How to inject PersistenceContext during unit testing? -


यह मेरा जावा वर्ग है:

  सार्वजनिक वर्ग खोजक {@ पेरिसटेंस कॉन्टैक्स (इकाई नाम = " एबीसी ") EntityManager em; सार्वजनिक बूलियन मौजूद है (int i) {वापसी (this.em.find (कर्मचारी। वर्ग, i)! = नल); }}  

यह इकाई परीक्षण है:

  सार्वजनिक वर्ग खोजकटेस्ट {@Test सार्वजनिक शून्य परीक्षण Simple () {खोजक एफ = नया खोजक (); जोर दे (एफ। एक्सिसिस्ट्स (1) == सच); }}  

परीक्षण NullPointerException से विफल रहता है क्योंकि Finder.em किसी के द्वारा इंजेक्शन नहीं है। मुझे इस स्थिति को ठीक से कैसे प्रबंधित करना चाहिए? क्या कोई बेहतरीन अभ्यास मौजूद है?

बिना कंटेनर के समान (या ऐसा कुछ - जो कि वसंत आधारित है ), आपको मैन्युअल रूप से इकाई प्रबंधक को इंजेक्ट करना होगा। उस स्थिति में, आप इस तरह से बेस क्लास के रूप में कुछ उपयोग कर सकते हैं:

  सार्वजनिक अमूर्त वर्ग JpaBaseRolledBackTestCase {संरक्षित स्थिर EntityManagerFactory emf; संरक्षित EntityManager उन्हें; @BeforeClass सार्वजनिक स्थिर बनाम createEntityManagerFactory () {emf = Persistence.createEntityManagerFactory ("PetstorePu"); } @ एफ़्टरक्लास सार्वजनिक स्थैतिक शून्य बंदएन्टीएटीएमएनेजरफैक्टर () {emf.close (); } @ सार्वजनिक शून्य से पहले शुरूआत () {em = emf.createEntityManager (); em.getTransaction () शुरू ()।; } @ के बाद सार्वजनिक शून्य रोलबैक लेनदेन () {यदि (em.getTransaction ()। IsActive ()) {em.getTransaction ()। रोलबैक (); } अगर (em.isOpen ()) {em.close (); }}}  
पर क्लिक करें

Comments