Пустые отчеты Junit от муравья - PullRequest
4 голосов
/ 02 декабря 2011

Я пытаюсь использовать ant для запуска тестов junit и создания отчетов.Я могу успешно запустить тесты, но файлы отчетов пусты.

Что я делаю не так?

Это мой build.xml:

<project name="JunitTest" default="test" basedir="."> 
    <property name="testdir" location="." /> 
    <property name="srcdir" location="." /> 
    <property name="full-compile" value="true" /> 
    <property name="test.reports" value="./reports" />

    <path id="classpath.base"/>
    <path id="classpath.test">

    <pathelement location="${testdir}" />
    <pathelement location="${srcdir}" />

    <path refid="classpath.base" />

    </path> 

    <target name="clean" >
        <delete verbose="${full-compile}"> 
            <fileset dir="${testdir}" includes="**/*.class" />
        </delete> `
    </target>

    <target name="compile" depends="clean">
        <javac srcdir="${srcdir}" destdir="${testdir}" verbose="${full-compile}" >
            <classpath refid="classpath.test"/>
        </javac>
    </target>

    <target name="test" depends="compile">
        <junit>
            <classpath refid="classpath.test" />
            <formatter type="brief" usefile="false" />
            <test name="com.tests.nav1" />
        </junit>

        <junitreport todir="${test.reports}">
            <fileset dir="${test.reports}">
                <include name="TEST-*.xml" />
            </fileset>
            <report todir="${test.reports}" />
        </junitreport>
    </target>

</project>

, и это вывод на консоль:

[junit] Using CLASSPATH C:\eclipse\eclipse-java-helios-SR1-win32\eclipse\JunitWS\SeleniumTraining\src;C:\jars\junit.jar;C:\ant\lib\ant-launcher.jar;C:\ant\lib\ant.jar;C:\ant\lib\ant-junit.jar;C:\ant\lib\ant-junit4.jar 
[junit] Testsuite: com.tests.nav1 
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 48.187 sec 
[junit] ------------- Standard Output --------------- 
[junit] testnav2 
[junit] ------------- ---------------- --------------- 
[junitreport] Using class org.apache.tools.ant.taskdefs.optional.TraXLiaison 
[junitreport] Processing C:\eclipse\eclipse-java-helios-SR1-win32\eclipse\JunitWS\SeleniumTraining\src\reports\TESTS-TestSuites.xml to C:\Users\pmahajan\AppData\Local\Temp\null236099757 
[junitreport] Loading stylesheet jar:file:/C:/ant/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl 
[junitreport] Transform time: 330ms 
[junitreport] Deleting: C:\Users\pmahajan\AppData\Local\Temp\null236099757 

BUILD SUCCESSFUL
Total time: 49 seconds

Ответы [ 4 ]

7 голосов
/ 02 декабря 2011

Если вы посмотрите на фрагмент муравья, есть несколько проблем:

  • Вы установили usefile=false, что означает, что выходной файл не создан
  • Вы установили formatter type=brief, которая будет печатать подробную информацию только для неудачных тестов
  • Вам также необходимо указать todir - папку, куда должен отправляться отчет, в теге <test> - по умолчанию текущеепапка.Это должно соответствовать папке, которую вы используете в задаче <junitreport>.

Вы можете попробовать следующий обновленный раздел <junit> ...

    <junit>
        <classpath refid="classpath.test" />
        <formatter type="xml"/>
        <test name="com.tests.nav1" todir="${test.reports}"/>
    </junit>
2 голосов
/ 20 марта 2013
   1 <target name="test" depends="compile">
   2     <junit>
   3         <classpath refid="classpath.test" />
   4         <formatter type="brief" usefile="false" />
   5         <test name="com.tests.nav1" />
   6     </junit>

   7     <junitreport todir="${test.reports}">
   8         <fileset dir="${test.reports}">
   9             <include name="TEST-*.xml" />
   10         </fileset>
   11         <report todir="${test.reports}" />
   12     </junitreport>
   13 </target>

Для указанного выше сегмента ваших кодированных необходимо выполнить следующие изменения.

  1. В 5-й строке необходимо указать параметр to directory (например, todir = $ {data.reports})
  2. В 8-й строке указанная директория должна указывать data.reports.
  3. 11-я строка должна содержать опцию format со значением frames (format = "frames").
1 голос
/ 02 декабря 2011

Задача ant JUnit doc дает пример, который может вам помочь (поскольку он, очевидно, делает именно то, что вы пытаетесь достичь):

<junit printsummary="yes" haltonfailure="yes">
    <classpath>
        <pathelement location="${build.tests}"/>
        <pathelement path="${java.class.path}"/>
    </classpath>

    <formatter type="plain"/>

    <test name="my.test.TestCase" haltonfailure="no" outfile="result">
        <formatter type="xml"/>
    </test>

    <batchtest fork="yes" todir="${reports.tests}">
        <fileset dir="${src.tests}">
            <include name="**/*Test*.java"/>
            <exclude name="**/AllTests.java"/>
        </fileset>
    </batchtest>
</junit>

Запускает мой.test.TestCase в той же виртуальной машине, игнорируя данный CLASSPATH;в случае неудачи этого теста выводится только предупреждение.В дополнение к результатам теста в виде простого текста, для этого теста XML-результат будет выведен в result.xml.Затем для каждого соответствующего файла в каталоге, определенном для $ {src.tests}, тест выполняется в отдельной виртуальной машине.Если тест не пройден, процесс сборки прерывается.Результаты собираются в файлах с именем TEST-name.txt и записываются в $ {reports.tests}.

В документе указано, что printsummary может принимать значения on и off, но они используют yes в примере, который находится на той же странице, так что я думаю, что он также принят.

0 голосов
/ 02 декабря 2011

Пожалуйста, попробуйте отформатировать с "xml"

   <formatter type="${junit.format}"/>

, где junit.format - это свойство с соответствующим значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...