java - JMockit: howto invoke custom method of MockUp -


मेरा आवेदन उपयोग FastScanner ( BufferedReader के आधार पर) इनपुट को पढ़ने के लिए ( मेरे सवाल का कोड अनुभाग को देखो )।

मैं नकली चाहिए मैं अपने परीक्षण में इनपुट विकल्प चाहते हैं FastScanner ( देखो

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

प्रश्न:।? JMockit मॉक-अप करने के लिए कस्टम पद्धतियां जोड़ने का तरीका और से उन्हें फोन ( को देखो switchInput की विधि FastScanner mockup )

कोड: [इस अनुभाग वैकल्पिक है, केवल अपने बेहतर समझ के लिए]

फास्टस्केनर

  संरक्षित स्थैतिक वर्ग फ़ास्ट-स्कैनर {BufferedReader br; स्ट्रिंगटोकनाइज़र सेंट; फास्टस्कैनर (इनपुटस्ट्रीम एफ) {br = नया BufferedReader (नया इंटस्टस्ट्रीम रीडर (एफ)); } स्ट्रिंग अगली () IOException फेंकता है {while (st == null ||! St.hasMoreTokens ()) {st = new StringTokenizer (br.readLine ()); } वापसी st.nextToken (); } Int nextInt () IOException फेंकता {return Integer.parseInt (अगला ()); }}  

FastScanner mockup:

  नई mockup & LT; FastScanner & gt; () {निजी पूर्णांक [] इनपुट 1 = नई int [ ] {17, 2, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1}; निजी इंट [] इनपुट 2 = नया इंट [] (5, 2, 2, 3, 3, 3, 3, 3}; निजी इंट [] इनपुट 3 = नया इंट [] (8, 2, 5, 1, 3, 1, 1, 1, 1, 3, 1}; निजी बाइट टॉगलर = 1; निजी बाइट पॉइंटर = 0; // यहां प्रश्न: मैं इस पद्धति को सार्वजनिक रूप से शून्य स्विच इन्पुट () कैसे कहूं? {Toggler ++; सूचक = 0; } @SuppressWarnings ("अप्रयुक्त") int nextInt () IOException फेंकता {int [] input = null; स्विच (टॉगलर) {मामला 1: इनपुट = इनपुट 1; टूटना; मामले 2: इनपुट = input2; टूटना; मामले 3: इनपुट = इनपुट 3; टूटना; } वापसी इनपुट [सूचक ++]; }};  

आपके पास एक ही MockUp एक ही समय में उपवर्ग (प्रत्येक ऐसे उपहास केवल पिछले एक को ओवरराइड करेगा जब इसे तत्काल) इसके बजाय, अपने @Mock विधि में एक इनवॉइस पैरामीटर जोड़ें, और उसके बाद कई डेटा सेटों के बीच अंतर करने के लिए प्रदान की जाने वाली जानकारी का उपयोग करें। उदाहरण के लिए:

  @Test सार्वजनिक शून्य testClientWithVariedDataFromFastScanners () {नई mockup & LT; FastScanner & gt; () {// परीक्षण डाटा @Mock पूर्णांक nextInt (प्रार्थना किए निवेश संबंधी निर्णय निर्माताओं) के लिए कुछ डेटा संरचना {int IDX = निवेश संबंधी निर्णय .getInvocationIndex (); फास्टएसकैनर एफएस = inv.getInvokedInstance (); // आंकड़ों संरचनाओं में आईडीएक्स या एफएस का प्रयोग करके अगले मान का पता लगाएं: ii ... I return ...; }}; client.doSomethingUsingFastScanners (); }  

इसके अलावा, यदि आप एक नकली उप-वर्ग पर जो भी तरीकों ( स्थिर विधियों सहित) को कॉल करना चाहते हैं, बस इसे नामित करें एक गुमनाम एक के बजाय वर्ग।


Comments

Popular posts from this blog

Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel -

multithreading - PhantomJS-Node in a for Loop -

c++ - MATLAB .m file to .mex file using Matlab Compiler -