मैं एक विफलता मामले का परीक्षण करना चाहता हूं जो लाइब्रेरी के गैर-सार्वजनिक अपवाद द्वारा ट्रिगर किया गया है। मैं इस अपवाद को कैसे फेंक सकता हूं? - जावा, अपवाद, परीक्षण, प्रतिबिंब, मॉकिटो

The Tinkerforge लाइब्रेरी थ्रो TimeoutException तथा NotConnectedException (अंय लोगों के बीच) । मैं "डी मेरे परीक्षण के मामले में इन फेंक की तरह है, तो मैं परीक्षण कर सकते है कि मेरे त्रुटि-हैंडलिंग कोड सही ढंग से काम करता है ।

जब मैं कोशिश करता हूँ

when(brickletLEDStripMock.getRGBValues(any(), any())).thenThrow(new NotConnectedException("Test"));

IntelliJ मुझे बताता है कि अपवाद सार्वजनिक नहीं है और पैकेज के बाहर से नहीं पहुंचा जा सकता ।

वहां एक तरह से इसे फेंक भी है, शायद Powermock के साथ?

संपादित करें:

करने के लिए धन्यवाद Fran Montero मैं अब यह काम कर कोड मिला:

Constructor<NotConnectedException> constructor;
constructor = NotConnectedException.class.getDeclaredConstructor();
constructor.setAccessible(true);
NotConnectedException exception = constructor.newInstance();

when(brickletLEDStripMock.getRGBValues(anyInt(), anyShort())).thenThrow(exception);

उत्तर:

जवाब के लिए 2 № 1

आप प्रतिबिंब api का उपयोग करके उस वर्ग तक पहुंच सकते हैं:

Constructor<Foo> constructor;
constructor = Foo.class.getDeclaredConstructor(Object.class);
constructor.setAccessible(true);
Foo<String> foo = constructor.newInstance("arg1");

चेक जावा: प्रकार पैरामीटर के साथ निजी निर्माता तक पहुँचने


संबंधित सवाल
सबसे लोकप्रिय