मैं विरासत में सुरक्षित विधि का नकल करना चाहता हूं। मैं इस विधि को सीधे जावा कोड से नहीं बुला सकता क्योंकि इसे कक्षा से विरासत में मिला है जो दूसरे पैकेज में है। मैं when(...)
मॉकिंग संरक्षित विधि
package a;
public class A() {
protected int m() {}
}
package b;
public class B extends a.A {
// this class currently does not override m method from a.A
public asd() {}
}
// test
package b;
class BTest {
@Test
public void testClass() {
B instance = PowerMockito.spy(new B());
PowerMockito.when(instance, <specify a method m>).thenReturn(123);
//PowerMockito.when(instance.m()).thenReturn(123); -- obviously does not work
}
}
मैं PowerMockito.when
ओवरराइड को देखा में में ठूंठ इस विधि निर्दिष्ट करने के लिए एक तरह से नहीं मिल रहा है और यह लगता है कि वे निजी तरीकों के लिए ही सब कर रहे हैं!
संरक्षित विधि कैसे निर्दिष्ट करें?
@AndroidKiller, कक्षा नाम के साथ अद्यतन कोड। असल में वे मॉकिटो से हो सकते हैं, लेकिन मैं पावरमॉक का उपयोग करता हूं और इन तरीकों का अर्थ है –
यही कारण है कि हमें हमेशा विरासत पर रचना पसंद करना चाहिए। यदि आप अपने परीक्षण कोड में इस विधि को फिर से परिभाषित नहीं कर सकते हैं, जैसे आप विरासत कोड के साथ करेंगे। – Brice