2012-04-26 10 views
76

का उपयोग कर एकाधिक वर्ग से नकली स्थैतिक विधियां मुझे पता है कि PowerMock का उपयोग कर कक्षा से स्थिर तरीकों का नकल कैसे करें।
लेकिन मैं जुनीट और पावरमोक का उपयोग कर टेस्ट क्लास में कई कक्षाओं से स्थैतिक तरीकों का नकल करना चाहता हूं।PowerMock

क्या कोई मुझे बता सकता है कि ऐसा करना संभव है और इसे कैसे करना है?

+1

आप इसे वैसे ही करते हैं जैसे आप एकल कक्षाओं से तरीकों का नकल करते हैं। कहाँ रह गया। – artbristol

+0

पावरमॉक का उपयोग करते समय, आपको इस एनोटेशन को टेस्ट क्लास @PrepareForTest (ClassThatContainsStaticMethod.class) में जोड़ना होगा। लेकिन हम कई एनोटेशन निर्दिष्ट नहीं कर सकते हैं। तो यह कैसे करें? – Newbie

उत्तर

182

एकाधिक कक्षाओं के लिए बस @PrepareForTest({Class1.class,Class2.class}) करें।

+7

घुंघराले ब्रेसिज़! यही वह था जो मैं याद कर रहा था। – sudocoder

+2

कक्षा स्तर –

+0

@NikitaBarishok पर हमेशा @ @RunWith (PowerMockRunner.class) 'के साथ PowerMockRunner पर स्विच करना न भूलें। आप उपर्युक्त कार्य करने के बजाय नियम को परिभाषित कर सकते हैं- 'नियम सार्वजनिक पावरमॉक नियम नियम = नया पावरमॉक नियम(); –

8
@Test 
@PrepareForTest({Class1.class, Class2.class}) 
public final void handleScript() throws Exception { 
    PowerMockito.mockStatic(Class1.class); 
    PowerMockito.mockStatic(Class2.class); 

आदि ...

+0

'पावरमैक 1.6.5' के लिए विधि स्तर पर '@ PrepareForTest' का उपयोग करने में समस्याएं हैं (केवल मेरे लिए कक्षा स्तर पर काम करती हैं) –

2

powermock/JUnit साथ जावा में, के रूप में कई स्थिर वर्गों के साथ उपयोग @PrepareForTest({}) आप सरणी ({}) के रूप में चाहते हैं।

@RunWith(PowerMockRunner.class) 
@PrepareForTest({XmlConverterA.class, XmlConverterB.class}) 
class TransfersServiceExceptionSpec { 

} 

मैं स्केला/JUnit में साथ powermock का इस्तेमाल किया है, scalatest रूप powermock के साथ एकीकरण के पास नहीं है।

@RunWith(classOf[PowerMockRunner]) 
@PrepareForTest(Array(classOf[XmlConverterA], classOf[XmlConverterB])) 
class TransfersServiceExceptionSpec { 

    @Test 
    def test() { 
    } 
}