Tuesday 15 July 2014

java - Mocked Method is throwing NullPointerException in Mockito -


यह मेरा परीक्षण वर्ग है

  @RunWith (MockitoJUnitRunner.class) सार्वजनिक वर्ग ServiceTest फैली हुई है सेवा {@Mock EntityManager eman = Mockito.mock (EntityManager.class); @ मॉक क्वेरी क्वेरी; @InjectMocks निजी सेवा सेवा; निजी स्थिर अंतिम स्ट्रिंग NAME = "name"; @ पहले सार्वजनिक सेट अप () {this.service = नई सेवा (); } @Test सार्वजनिक शून्य पहले MethodTest () {क्वेरी क्वेरी = नकली (Query.class); जब (eman.createNamedQuery (NAME))। फिर वापसी (क्वेरी); जब (query.setParameter ("नाम", प्रकार))। फिर वापसी (क्वेरी); जब (query.getSingleResult ())। फिर वापसी (प्रकार); ** service.getAllMethod (1, "स्ट्रिंग"); ** assertSame (/ * तुलना करने के लिए कुछ * /); }}  

यह मेरी सेवा वर्ग विधि है

  सार्वजनिक getAllMethod (int आईडी, स्ट्रिंग स्ट्रिंग) {क्वेरी क्वेरी = em .createNamedQuery ("name") ; ** query.setParameter ("स्ट्रिंग", प्रकार); ** टाइप करें = query.getSingleResult (); }  

जब से service.getAllMethod (1, "स्ट्रिंग") को मॉक किए गए ऑब्जेक्ट से लागू किया जाता है, तो मुझे query.setParameter ("name ", प्रकार) क्योंकि मुझे लगता है कि क्वेरी अभी भी शून्य है कृपया मान लें कि मेरी सेवा ठीक काम कर रही है अग्रिम में धन्यवाद

डीबगिंग करते समय मैं सेवा वर्ग में क्वेरी क्वेरी का मान जांचता हूं। इसका मान शून्य है। कैंट इस समस्या को हल करने का तरीका जानें।

आप हर परीक्षा से पहले अपनी सेवा को पुन: तैयार कर रहे हैं। इसलिए सेवा कि मोकीटो में नकली इंजेक्शन लगाने में खो गया है।

सेट अप विधि से छुटकारा पाएं और इसके बजाए, इस तरह सेवा की घोषणा करें:

<पूर्व> @InjectMocks निजी सेवा सेवा = नई सेवा ();

कुछ अन्य चीजें भी गलत हैं जैसे EntityManager Mockito.mock की आवश्यकता नहीं है, परीक्षण वर्ग को सेवा , @Mock Query का उपयोग नहीं किया जा रहा है।


यहां शुरू करने के लिए एक कठिन टेम्प्लेट है:

  @RunWith (MockitoJUnitRunner.class) सार्वजनिक श्रेणी का TestA {@Mock EntityManager एमन; @InjectMocks निजी सेवा सेवा = नई सेवा (); @Test सार्वजनिक शून्य पहले MethodTest () {क्वेरी क्वेरी = Mockito.mock (Query.class); Mockito.when (eman.createNamedQuery (नाम)) thenReturn (क्वेरी)। Service.getAllMethod (1, "स्ट्रिंग"); }}  

मान लें कि सेवा की तरह कुछ है:

  सार्वजनिक वर्ग सेवा {@ एटोवायर EntityManager entityManager; सार्वजनिक शून्य getAllMethod (int i, स्ट्रिंग एस) {क्वेरी q = entityManager.createNamedQuery ("name"); ... q मेरे लिए यहाँ नल नहीं है}}  

No comments:

Post a Comment