إجراء اختبارات JUnit 4 "الخالصة" باستخدام النمل

StackOverflow https://stackoverflow.com/questions/635481

  •  10-07-2019
  •  | 
  •  

سؤال

لقد انتقلنا إلى كل من JUnit 4 وant 1.7

تعمل الاختبارات بشكل جيد في Eclipse، ولكن يتم تجاهل التعليقات التوضيحية عند تشغيل الاختبارات باستخدام ant.

وفقا لمهمة النملة junit توثيق:

كما أنه يعمل مع JUnit 4.0، بما في ذلك اختبارات JUnit 4 "الخالصة" باستخدام التعليقات التوضيحية فقط وليس JUnit4TestAdapter.

لكن الوثائق لا توضح كيفية تكوينها.

هل هناك أي إعدادات خاصة مطلوبة لمهمة junit؟هل فاتني شيء؟لدينا كلا الاختبارين اللذين يمتدان إلى TestCase (أي:3.8) واختبارات Junit 4 "الخالصة"، هل يمكن أن تكون هذه هي المشكلة؟

هل كانت مفيدة؟

المحلول

وأنا باستخدام اختبارات JUnit4 نقية مع النملة.

وهنا هو الجزء مثيرة للاهتمام من ملف بناء بلدي:

<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>

تأكد من أن لديك أحدث نسخة من ملف junit.jar في الدليل ليب من النملة. وبقدر ما أعرف النسخة المطلوبة يتم تسليم مع الإصدارات النمل 1.7 أو أعلى ...

نصائح أخرى

والسفن النملة مع نسخة من أداة JUnit 3 افتراضيا. أداة JUnit 3 لا يوجد لديه دعم الشروح الاختبار.

لاستخدام أداة JUnit 4 التعليقات من مهمة أداة JUnit تأكد من توفير موقع جرة أداة JUnit 4 في عنصر متداخلة CLASSPATH المهمة أداة JUnit (انظر <لأ href = "http://ant.apache.org /faq.html#delegating-classloader "يختلط =" noreferrer "> هذا الإدخال في النملة التعليمات ).

<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>

وهذا هو الحل الأفضل الكتابة فوق النمل junit.jar في ANT_HOME / ليب لأنه يعني أنك يمكن أن تبقي جرة أداة JUnit بك في التحكم بالمصادر جنبا إلى جنب مع التعليمات البرمجية جعل ترقيات إلى الإصدارات الأحدث مباشرة.

ملاحظة أنه بينما أنا لم تحدد أي بما في ذلك نمط في fileset بلدي فوق هذا لا يعني أن المهمة أداة JUnit محاولتهم تشغيل أداة JUnit ضد كافة الفئات في أن بنية الدليل الذي قد يؤدي إلى عدد من الطبقات يتم تضمينها أن دون 'ر تحتوي على أي اختبارات اعتمادا على الطريقة التي يكون تنظيما الملفات المصدر.

يمكنك أخيرًا العثور على الاختبارات وتنفيذها فقط باستخدام الملف تخطي NonTests تمت إضافة المعلمة في النمل 1.9.3+!

هذا هو مقتطف الكود من الإجابة المقبولة أعلاه (باستثناء الجديد تخطي NonTests المعلمة والتخلص من "الاختبار" في متطلبات اسم الملف):

<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>

وهذا ما حدث لي، وكان لأنني كنت على حد سواء استخدام التعليقات وتوسيع TestCase.

public class TestXXX extends TestCase {

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

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

وعند توسيع TestCase كنت على افتراض أسلوب JUnit3 بحيث يتم تجاهل شروح JUnit4.

والحل هو وقف توسيع TestCase.

والتحقق من تعريف CLASSPATH الخاص بك ... هذا حل مشكلتي.

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

وهذا هو الجزء ذي الصلة من بلدي النصي النمل عام ... لست متأكدا إذا كان ذلك سوف تساعدك أم لا ..

 <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>

وينطبق هذا الشرح على الطبقات الأخرى org.junit.Ignore

وحاولت أيضا لإجراء اختبارات مع أداة JUnit 4.0 بدون JUnit4TestAdapter، أي دون طريقة
    العام جناح junit.framework.Test ثابت () {         العودة JUnit4TestAdapter الجديدة (SomeTestClass.class)؛     }

وأنا استخدم النملة 1.9.4. تشغيل اختبار النمل مطول (-v النمل) يبين

<اقتباس فقرة>   

[أداة JUnit] الجري اختبارات متعددة في نفس VM
    [أداة JUnit] مضيفا ضمنيا /usr/share/java/junit.jar:/usr/sharejava/ant-launcher.jar:/usr/share/java/ant.jar:/usr/share/java/ant/ant-junit جرة إلى CLASSPATH

وآها، ولكن لا تزال هناك بعض النمل أداة 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>

ووأنه يعمل. دون: لا. وأنا أدرك أن هذا الحل ليست جميلة على الإطلاق ...

ما انتهى بي الأمر القيام تم إضافة النمل إلى واحد من تعريفات بلدي المستخدمة من قبل هذه المهمة>. وآخرون فويلا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top