2010-04-22 18 views
9

मैं एक परीक्षण वर्ग है कि मैं folowing कोड के साथ एक मुख्य विधि से चलाने के लिए कोशिश कर रहा हूँ है मुद्रित नहीं करता है:JUnitCore.runClasses कुछ भी

Result r = org.junit.runner.JUnitCore.runClasses(TestReader.class); 

मैं देख सकता हूँ जब मैं परिणाम वस्तु की जांच है कि 5 परीक्षण चलाए गए हैं लेकिन स्क्रीन पर कुछ भी मुद्रित नहीं है।

क्या मुझे आउटपुट प्राप्त करने के लिए कुछ और करना चाहिए?

उत्तर

3

ऐसा करने का एक बहुत ही साफ तरीका नहीं है, क्योंकि यह करना आम बात नहीं है। यदि आप प्रोग्राम बना रहे हैं तो आपको केवल आउटपुट प्रिंट करने की आवश्यकता है जिसका उपयोग कमांड लाइन पर परीक्षण चलाने के लिए किया जा सकता है, और JUnitCore स्वयं ही करता है।

सभी विकल्पों में एक आंतरिक पैकेज में कक्षाओं का उपयोग शामिल है।

Result r = JUnitCore.runMain(new RealSystem(), TestReader.class.getName()) 

आप System.out के अलावा कुछ करने के लिए प्रिंट करना चाहते हैं, तो आप org.junit.internal.JUnitSystem की अपनी खुद की उपवर्ग बना सकते हैं और इसके बजाय उसका उपयोग की RealSystem

तुम भी org.junit.internal.TextListener उपयोग कर सकते हैं कर सकते हैं। उदाहरण के लिए the JUnitCore source में runMain(JUnitSystem system, String... args) देखें।

+0

आप उदाहरण क्यों, "यह करने के लिए एक आम बात नहीं है" कर सकते हैं। कॉलिंग में कॉल क्लास कॉलिंग का वर्णन किया गया है। अगर ऐसा करने का दूसरा तरीका है, तो यह क्या है? – cmcginty

+0

एकमात्र बार जिसे आप 'runClasses()' कहते हैं, वह है यदि आप परीक्षण चलाने के लिए अपना कोड लिख रहे हैं। आम तौर पर आपके पास जुनीटकोर आपकी मुख्य श्रेणी है, परीक्षणों को अपना आईडीई बनाएं, या परीक्षण चलाने के लिए आपके निर्माण प्रणाली में निर्मित कुछ का उपयोग करें। यदि आपको अपने परीक्षण चलाने के लिए कस्टम क्लास लिखना है, तो सामान्य तरीका org.junit.runner.notification.RunListener' का उपयोग करना है। व्यक्तिगत रूप से, मुझे नाराज रहा है कि मुझे जुनीट 4 में कितनी बार कुछ करने की ज़रूरत है और आंतरिक कक्षाओं को एकमात्र समाधान मिलना है। – NamshubWriter

20

हाँ, आप TextListener इस तरह रजिस्टर करना चाहिए:

JUnitCore junit = new JUnitCore(); 
    junit.addListener(new TextListener(System.out)); 
    junit.run(TestReader.class); 
+0

जुनीट 4.11 संग्रह में टेक्स्ट लिस्टनर के साथ नहीं आता है। मैं उस मामले में क्या करूँ? – djangofan

+1

@djangofan: यह org.junit.internal.TextListener, 4.11 में है। –

+0

'runClasses (...)' विधि एक नया ताजा 'JUnitCore' बनाता है ताकि श्रोताओं को खो दिया जा सके (देखें [github में कोड] (https://github.com/junit-team/junit4/blob/a832c5afe5b0e7c2590d057a1a49a344d207f8a0/src /main/java/org/junit/runner/JUnitCore.java#L62))। यही कारण है कि आपको इसके बजाए 'रन()' का उपयोग करना चाहिए। – ecerulm

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