पॉवरमॉक का उपयोग करके कई वर्ग से स्थैतिक तरीकों का उपयोग करें


103

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

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


1
आप इसे उसी तरह से करते हैं जैसे आप एकल कक्षाओं से तरीकों का मजाक उड़ाते हैं। कहाँ रह गया।
आर्टब्रिस्टल

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

जवाबों:


256

बस @PrepareForTest({Class1.class,Class2.class})कई वर्गों के लिए करते हैं।


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

2
इसके अलावा @RunWith(PowerMockRunner.class)क्लास लेवल पर PowerMockRunner पर स्विच करना न भूलें
निकिता बारिशोक

1
@NikitaBarishok की हमेशा जरूरत नहीं थी। आप उपरोक्त कार्य करने के बजाय एक नियम को परिभाषित कर सकते हैं -@Rule public PowerMockRule rule = new PowerMockRule();
अनिकेत ठाकुर

5
कोटलिन में@PrepareForTest(Class1::class, Class2::class))
रयान

इसके @PrepareOnlyThisForTestबजाय उपयोग करना भी बेहतर है @PrepareForTest। उत्तरार्द्ध भी सुपरक्लेसेस को संशोधित करता है, जिसकी सामान्य रूप से आवश्यकता नहीं होती है।
www.Decompiler.com

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

आदि...


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

2

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

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

}

मैंने स्कोला / जूनिट के साथ पॉरमॉक का उपयोग किया है , क्योंकि स्कैलेस्टेस्ट का पॉवॉर्मॉक के साथ एकीकरण नहीं है।

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

  @Test
  def test() {
  }
}

1

यदि आप कोटलिन का उपयोग कर रहे हैं, तो वाक्य रचना यह है

@PrepareForTest(ClassA::class, ClassB::class)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.