2009-03-11 15 views
22

का उपयोग कर परीक्षण हम दोनों JUnit 4 के लिए चले गए और चींटी 1.7चल रहा है "शुद्ध" JUnit 4 चींटी

परीक्षण ग्रहण में ठीक चलाता है, लेकिन एनोटेशन जब चींटी का उपयोग कर परीक्षण चलाने अनदेखी कर रहे हैं।

चींटी JUnit कार्य documentation के अनुसार:

यह भी JUnit 4.0 के साथ काम करता है "शुद्ध" JUnit 4 केवल एनोटेशन और कोई JUnit4TestAdapter का उपयोग कर परीक्षण भी शामिल है।

लेकिन दस्तावेज़ीकरण इस बात पर विस्तृत नहीं है कि इसे कैसे कॉन्फ़िगर किया जाना चाहिए।

क्या जूनिट कार्य के लिए कोई विशेष सेटिंग आवश्यक है? क्या मैं कुछ भूल रहा हूँ? हमारे पास टेस्टकेस (यानी 3.8 शैली) और "शुद्ध" जुनीट 4 परीक्षणों का विस्तार करने वाले दोनों टेस्ट हैं, क्या यह समस्या हो सकती है?

उत्तर

14

मैं चींटी के साथ शुद्ध जुनीट 4 परीक्षण का उपयोग कर रहा हूं।

<junit printsummary="yes" haltonfailure="yes"> 
    <formatter type="xml"/> 
    <classpath refid="path.test"/> 
    <batchtest fork="yes" todir="${dir.report.unittests.xml}"> 
     <fileset dir="src"> 
      <include name="**/*Test*.java"/> 
     </fileset> 
    </batchtest> 
</junit> 

सुनिश्चित करें कि आप चींटी की lib निर्देशिका में junit.jar फ़ाइल का नवीनतम संस्करण है:

यहाँ अपने निर्माण फ़ाइल का दिलचस्प हिस्सा है। जहाँ तक मेरा आवश्यक संस्करण पता चींटी 1.7 या उच्चतर संस्करण के साथ वितरित किया जाता है ...

+2

इसलिए परीक्षण कक्षाओं (जैसे "* test.java") के लिए नामकरण पैटर्न का उपयोग करने से बचने का कोई तरीका नहीं है, भले ही जुनीट 4 की आवश्यकता नहीं है उस? – Jonik

+0

@jonik आपको नामकरण पैटर्न का उपयोग करने की आवश्यकता नहीं है, लेकिन इससे आपको किसी भी अतिरिक्त कक्षा के खिलाफ जुनीट चलाने से बचने में मदद मिलेगी, जिसमें आपके टेस्ट क्लास के समान पैकेज में परीक्षण शामिल नहीं हैं। इस तरह की कक्षाएं जुनीट आउटपुट में त्रुटियां देगी। – MikeD

+3

क्या होगा यदि आपके पास उपयोगिता कक्षाएं हैं जो शुरुआत में टेस्ट होती हैं लेकिन परीक्षण कक्षाएं नहीं हैं? आमतौर पर, "जुनीट 4 का उपयोग करके" का अर्थ है "@ टेस्ट एनोटेशन अंक परीक्षण, कक्षा का नाम नहीं"। सभी .java फ़ाइलों को शामिल करना संभव होना चाहिए और इसे केवल उन परीक्षणों के साथ चलाएं। – Trejkaz

0

यह है कि आप या नहीं में मदद करेंगे मेरी सामान्य चींटी स्क्रिप्ट की प्रासंगिकता का नहीं यकीन है ... ..

<junit fork="true" 
     forkmode="once" 
     haltonfailure="false" 
     haltonerror="false" 
     failureproperty="tests.failures" 
     errorproperty="tests.errors" 
     includeantruntime="true" 
     showoutput="true" 
     printsummary="true"> 
    <classpath> 
     <path refid="path-id.test.classpath.run"/> 
    </classpath> 

    <formatter type="xml"/> 

    <batchtest fork="yes" 
       todir="${dir.build.testresults}"> 
     <fileset dir="${dir.src.tests}"> 
      <include name="**/*Test.java"/> 
     </fileset> 
    </batchtest> 
</junit> 
-1

जो मैं समाप्त कर रहा हूं वह मेरी परिभाषाओं में से एक को एंट जोड़ रहा था जिसका उपयोग कार्य द्वारा किया जाता है>। और voila।

0

अन्य वर्गों को यह एनोटेशन org.junit.Ignore

1

अपने classpath परिभाषा सत्यापित करें ... इस मेरी समस्या हल को लागू करें।

<path id="classpath" description="Classpath do Projeto"> 
    <fileset dir="${LIB}"> 
     <include name="**/*.jar" /> 
     <exclude name="**/.SVN/*.*"/> 
    </fileset> 
</path> 
2

यह मेरे साथ हुआ और ऐसा इसलिए था क्योंकि मैं दोनों एनोटेशन का उपयोग कर रहा था और टेस्टकेस का विस्तार कर रहा था।

public class TestXXX extends TestCase { 

    @Test 
    public void testSimpleValidCase() { 
     // this was running 
    } 

    @Test 
    public void simpleValidCase() { 
     // this wasn't running 
    } 
} 

जब आप का विस्तार testcase आप JUnit3 शैली मानते हैं तो JUnit4 एनोटेशन अनदेखी कर रहे हैं।

समाधान टेस्टकेस को विस्तारित करना बंद करना है।

6

डिफ़ॉल्ट रूप से जुनीट 3 के संस्करण के साथ चींटी जहाजों। जुनीट 3 का परीक्षण एनोटेशन के लिए कोई समर्थन नहीं है।

जूनिट कार्य से जुनीट 4 एनोटेशन का उपयोग करने के लिए सुनिश्चित करें कि आप जूनिट कार्य के नेस्टेड क्लासपाथ तत्व में एक जुनीट 4 जार का स्थान प्रदान करें (this entry in the ant FAQ देखें)।

<junit showoutput="yes" fork="true"> 
    <classpath> 
     <!-- The location of the JUnit version that you want to use --> 
     <pathelement location="lib/junit-4.9b1.jar"/> 
    </classpath> 

    <formatter type="plain" usefile="false" /> 

    <batchtest> 
     <fileset dir="${tests.dir}"/> 
    </batchtest> 
</junit> 

यह ANT_HOME/lib में चींटी-junit.jar अधिलेखन के रूप में यह मतलब है कि आप अपने कोड सीधा बाद के संस्करणों के लिए उन्नयन बनाने के साथ-साथ स्रोत नियंत्रण में अपने JUnit जार रख सकते करने के लिए एक बेहतर समाधान है।

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

+0

मेरे पास डेबियन में बिल्कुल वही समस्या है: चींटी 1.8.0, जूनिट 4.10, जूनिट -410.जर के क्लासपाथ को जूनिट कार्य के हिस्से के रूप में जोड़ा गया और फिर भी, एनोटेशन @ टास्क पहचाना नहीं गया है, केवल परीक्षण * कार्यों के साथ शुरू करने के तरीकों का नाम बदल रहा है ... –

+0

@ MenelaosPerdikeas क्या आपका मतलब 'टास्क 'था? मैं उम्मीद करता हूं कि आप एनोटेशन के रूप में '@ टेस्ट' का उपयोग कर रहे हैं। मान लीजिए कि आप '@ टेस्ट' का उपयोग कर रहे हैं -वें ध्वज के साथ चींटी चलाने की कोशिश करें और जूनिट कार्य के आउटपुट को क्लासपाथ दिखाएगा। फिर आप यह सुनिश्चित कर सकते हैं कि जूनिट-4.10.jar क्लासपाथ जिसे आपने कार्य में जोड़ा है, मौजूद है। मैंने इस समस्या का निदान करने की कोशिश करते समय -v वास्तव में मददगार पाया। – MikeD

+0

''kkk =" true "' विकल्प को छोड़कर मेरे पास वास्तव में यह '' तत्व था। उस विकल्प को जोड़ने से यह मेरे लिए हल हो गया। – Darkhogg

3

आप अंततः skipNonTests पैरामीटर के साथ परीक्षणों को केवल 1.9.3+ में जोड़कर परीक्षण और निष्पादित कर सकते हैं!

<junit printsummary="yes" haltonfailure="yes"> 
    <formatter type="xml"/> 
    <classpath refid="path.test"/> 
    <batchtest skipNonTests="true" fork="yes" todir="${dir.report.unittests.xml}"> 
     <fileset dir="src"> 
      <include name="**/*.java"/> 
     </fileset> 
    </batchtest> 
</junit> 
+0

हाँ, यह बहुत अच्छा है कि उन्होंने अंततः इसे जोड़ा। अब अगर वे सब कुछ ठीक कर सकते हैं-चींटी में, चींटी वास्तव में एक अच्छा उपकरण बन सकता है। Haha। – Trejkaz

0

मैं भी परीक्षण करने की कोशिश की:

यह ऊपर स्वीकार किए जाते हैं जवाब से कोड का टुकड़ा (नई skipNonTests पैरामीटर और फ़ाइल नाम आवश्यकता में "टेस्ट" से छुटकारा पाने के लिए छोड़कर) है JUnit 4.0 के साथ JUnit4TestAdapter के बिना, यानी विधि
सार्वजनिक स्थैतिक junit.framework.Test suite() { नया JUnit4TestAdapter (SomeTestClass.class) लौटाएं; }

मैं चींटी 1.9.4 का उपयोग करता हूं। चल चींटी परीक्षण वर्बोज़ (चींटी -v) से पता चलता

[JUnit] उसी वीएम
[JUnit] उलझाव से जोड़ने /usr/share/java/junit.jar:/usr/sharejava/ में कई परीक्षण चल रहा है चींटी-launcher.jar: /usr/share/java/ant.jar: /usr/share/java/ant/ant-junit.jar क्लासपाथ को

अहा, लेकिन अभी भी वहाँ कुछ चींटी-junit- है कार्य। /usr/share/java/ant/ant-junit4.jar के साथ इस शो को डाउनलोड करना जो पूरी तरह से जोड़ा नहीं गया है। मैंने इसे स्पष्ट रूप से जोड़ा:

<junit printsummary="yes" 
    fork="yes" 
    forkmode="once" 
    maxmemory="1023m" 
    showoutput="no"> 
    ... 
    <classpath> 
    <pathelement path="...:${junitJar}:${hamcrestJar}:/usr/share/java/ant/ant-junit4.jar" /> 
    </classpath> 
... 
</junit> 

और यह काम किया। बिना: नहीं। मुझे पता है कि यह समाधान बिल्कुल सुंदर नहीं है ...

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