2014-05-13 7 views
5

मैं एक ही कक्षाअंतिम क्षेत्र का नकल कैसे करें? mockito/powermock

class MyCalss{ 
    final static SomeClass field = new SomeClass(); 
    ... 
} 

मैं MyCalss के कहने उपहास करने के लिए करना चाहिए। इस नकली में वास्तविक वस्तु जैसे क्षेत्र होना चाहिए।

मैं इसे कैसे प्राप्त कर सकता हूं?

उत्तर

1

आप एक ढांचे का उपयोग कर सकते हैं जो जेमॉकिट या पावरमॉक जैसे रचनाकारों को कॉल करने की अनुमति देता है।

Powermock

JMockit

3

मजाक तरीकों और इंटरफेस, नहीं क्षेत्रों पर चल रही है; इसके अलावा, यह उदाहरण सदस्यों पर संचालित होता है, स्थिर सदस्य पर नहीं। मॉकिटो और पावरमॉक इस समस्या को हल करने के लिए सही उपकरण नहीं हैं।

हालांकि आप use reflection to set final fields कर सकते हैं, लेकिन आप प्रभावी रूप से अपनी घोषणा के आसपास काम कर रहे हैं, और JLS 17.5.3 की सीमाओं और खतरों के अधीन हैं।

public void methodUnderTest() { 
    methodUnderTest(MyClass.field); 
} 

/** Package-visible for testing. Test this method instead. */ 
void methodUnderTest(SomeClass someClass) { 
    someClass.firePhotonTorpedoes(); 
} 
:

एक बेहतर डिजाइन परीक्षण के अंतर्गत प्रणाली में विधि के पुनर्लेखन के लिए अपने SomeClass निर्भरता इंजेक्षन होगा

संबंधित मुद्दे