Тест JUnit завершается неудачей в Ant с задачей «, но проходит с помощью «?

#java #ant #build #junit #junit4

#java #ant #сборка #junit #junit4

Вопрос:

Я автоматизирую свои тесты JUnit в своей сборке Ant. Однако мой простой тест проходит только при запуске из IDE и командной строки, но завершается неудачно с <junit> задачей Ant. Когда я запускаю его из командной строки (технически я использую задачу Ant <exec> ), результат:

 clean:

compile_tests:
    [javac] Compiling 2 source files to C:MY_TEMP

junit_exec:
     [exec] JUnit version 4.10
     [exec] .
     [exec] Time: 0.004
     [exec]
     [exec] OK (1 test)
     [exec]

BUILD SUCCESSFUL
Total time: 1 second
 

но когда я использую <junit> задачу:

 Buildfile: C:MY_TEMPbuild.xml

clean:

compile_tests:
    [javac] Compiling 2 source files to C:MY_TEMP

junit_ant:
     [echo] junit_ant started
    [junit] Test SimpleTest FAILED

BUILD SUCCESSFUL
Total time: 0 seconds
 

Содержимое MY_TEMP junit-4.10.jar , SimpleTest.java , и build.xml .

Я скопировал junit-4.10.jar в %ANT_HOME%lib папку, как указано в документации Ant junit task. У него уже были оба ant-junit.jar и ant-junit4.jar .

Моя версия Java — 1.6.0_26.

Мой тест:

 // YES, this is the default package
import org.junit.*;

public class SimpleTest {

    @Test
    public void mySimpleTest(){
        Assert.assertEquals(  2,  1   1  );
    }

}
 

И мой файл Ant (build.xml ), является:

 <?xml version="1.0"?>
<project name="regression_tests" basedir=".">

    <target name="clean">
        <delete>
            <fileset dir="." includes="*.class" />
        </delete>
    </target>

    <target name="compile_tests" depends="clean">
            <javac srcdir="." destdir="." source="1.6" target="1.6" includeantruntime="false" >
            <classpath>
                <pathelement location="./junit-4.10.jar" />
            </classpath>
        </javac>
    </target>

    <target name="junit_ant" depends="compile_tests" >
        <echo message="junit_ant started" />

        <junit>
            <test name="SimpleTest" />
        </junit>
    </target>

    <target name="junit_exec" depends="compile_tests">
        <exec executable="java" dir="." >
            <arg value="-classpath" />
            <arg value=".;junit-4.10.jar" />
            <arg value="org.junit.runner.JUnitCore" />
            <arg value="SimpleTest" />
        </exec>
    </target>

</project>
 

Комментарии:

1. В чем ошибка теста?

2. Как бы мне это выяснить? Даже с -v опцией, предоставленной Ant, он ничего не печатает о сбое. Судя по самому тесту, который не может завершиться неудачей, я полагаю, что мне, должно быть, чего-то не хватает с точки зрения конфигурации.

3. Посмотрите в отчете о тестировании?

4. Где бы это найти? Я предполагаю, что это опция, которую необходимо включить? Я пробовал оба enableTestListenerEvents="true" и logfailedtests="yes" . Я привык к отчетам Maven о верных результатах.

5. Неважно, нашел, как создавать отчеты отсюда: junit.sourceforge.net/doc/faq/faq.htm#running_6

Ответ №1:

Если тест проходит одним способом и завершается другим, скорее всего, это связано с путем к классу, например, он не может найти тестовый класс, тестируемый класс или библиотеку.

Вывод теста должен помочь уточнить, в чем проблема.

Ответ №2:

В частности, я отредактировал свою junit_ant задачу на:

         <junit>
            <classpath location="." />

            <test name="SimpleTest" />
            <formatter type="xml" />
        </junit>

        <junitreport todir=".">
            <fileset dir=".">
                <include name="TEST-*.xml" />
            </fileset>
            <report todir="." />
        </junitreport>
 

Который затем показал мне, что сбой был java.lang.ClassNotFoundException: SimpleTest , поэтому я просто добавил <classpath location="." /> к <junit> задаче, а затем она сработала.

Ответ №3:

Добавьте эту строку для получения дополнительной информации:

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