2013-08-29 9 views
5

जावा में वर्गीकृत इकाई परीक्षण (पैकेज दृश्यता के साथ मतलब) कैसे परीक्षण करें?निजी वर्ग इकाई परीक्षण

मेरे पास एक पैकेज है, इस पैकेज में केवल एक वर्ग सार्वजनिक है, अन्य कक्षाएं निजी हैं। यूनिट परीक्षणों के साथ अन्य वर्गीकृत कैसे कवर करें? मैं जार आराम करने में यूनिट परीक्षण शामिल करना चाहता हूं।

+0

वे निजी हैं या निजी पैकेज? यदि वे पैकेज निजी हैं, तो आप उन्हें किसी भी अन्य वर्ग की तरह परीक्षण कर सकते हैं, बशर्ते आपके परीक्षण एक ही पैकेज में हों (जो उन्हें चाहिए) ... – assylias

उत्तर

9

उसी पैकेज में यूनिट टेस्ट क्लास बनाएं।

उदाहरण के लिए, यदि com.example.MyPrivateClasssrc/main/java/com/example/MyPrivateClass.java

में स्थित उसके बाद परीक्षण वर्ग एक ही पैकेज com.example.MyPrivateClassTestCase में होगा और src/test/java/com/example/MyPrivateClassTestCase.java

2

में स्थित हो जाएगा @ Kowser के जवाब में संकेत दिया, परीक्षण ही में हो सकता है पैकेज।

ग्रहण में, और मैं अन्य आईडीई मानता हूं, किसी के पास विभिन्न परियोजनाओं में कक्षाएं हो सकती हैं लेकिन उसी पैकेज में। अन्य परियोजनाओं के वर्ग उपलब्ध कराने के लिए, एक परियोजना को किसी अन्य परियोजना पर निर्भर करने के लिए घोषित किया जा सकता है। यह एक अलग इकाई परीक्षण परियोजना की अनुमति देता है जो उत्पादन परियोजना पर निर्भर करता है और इसकी पैकेज संरचना का पालन करता है, लेकिन इसकी अपनी मूल निर्देशिका है।

वह संरचना टेस्ट कोड को उत्पादन कोड से साफ़ रूप से अलग रखती है।

3

ऐसा करने के दो तरीके हैं।

मानक तरीका क्लास के उसी पैकेज में परीक्षण के लिए अपनी टेस्ट क्लास को परिभाषित करना है। यह आसानी से किया जाना चाहिए क्योंकि आधुनिक आईडीई डिफ़ॉल्ट रूप से परीक्षण किए जा रहे वर्ग के उसी पैकेज में परीक्षण केस उत्पन्न करता है।

गैर मानक लेकिन बहुत उपयोगी तरीका प्रतिबिंब का उपयोग करना है। यह आपको निजी पैकेज को "पैकेज निजी" के बजाय वास्तविक "निजी" के रूप में परिभाषित करने की अनुमति देता है। उदाहरण के लिए, यदि आपके पास कक्षा है।

class MyClass { 
    private Boolean methodToBeTested(String argument) { 
     ........ 
    } 
} 

आप इस तरह अपने परीक्षा पद्धति हो सकता है:

class MyTestClass { 

    @Test 
    public void testMethod() { 
     Method method = MyClass.class.getDeclaredMethod("methodToBeTested", String.class); 
     method.setAccessible(true); 
     Boolean result = (Boolean)method.invoke(new MyClass(), "test parameter"); 

     Assert.assertTrue(result); 
    } 
} 
संबंधित मुद्दे