Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ant junit task does not report detail

I tried to write an ant with JUnit test, but get below result:

unittest:
    [junit] Running com.mytest.utiltest
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
    [junit] Test com.mytest.utiltest FAILED

it just shows error without print details, I specify below parameter in build.xml also tried to start with ant -v or ant -debug, but did not get any luck. Can anyone help?

<junit printsummary="yes" showoutput="true">

ant 1.8.2, sun jdk1.6.0_20, junit 4.8.2

to narrow down the problem, I created a seperate project this is my build.xml

<project name = "TestPrj" default="unittest" basedir = ".">

    <target name="unittest" >
        <junit printsummary="yes" showoutput="true" >
            <classpath>
                <pathelement location="./junit-4.8.2.jar"/>
                <pathelement location="./ant-junit4.jar"/>
            </classpath>
            <test name = "com.mytest.unittest.SimpleTest" todir="."/>
        </junit>
    </target>

</project>

below is simpletest.java

package com.mytest.unittest;

import junit.framework.TestCase;


public class SimpleTest extends TestCase{
    public void testFirst()
    {
        assertTrue(true);
    }

}

C:\TestPrj>ant

Buildfile: C:\TestPrj\build.xml

unittest:
    [junit] Running com.mytest.unittest.SimpleTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0 sec

BUILD SUCCESSFUL
Total time: 0 seconds

C:\TestPrj>dir

 Directory of C:\TestPrj

04/02/2011  02:00 PM    <DIR>          .
04/02/2011  02:00 PM    <DIR>          ..
04/02/2011  01:56 PM               280 .classpath
04/02/2011  01:54 PM               519 .project
04/02/2011  02:00 PM             7,120 ant-junit4.jar
04/02/2011  02:00 PM               403 build.xml
04/02/2011  01:55 PM    <DIR>          com
11/17/2010  05:36 PM           237,344 junit-4.8.2.jar
               5 File(s)        245,666 bytes
               3 Dir(s)  28,451,311,616 bytes free

Why there's not a JUnit results/detail/report generated? So that in my real case of failure, i can not troubleshoot my questions?

like image 568
hetaoblog Avatar asked Apr 02 '11 05:04

hetaoblog


2 Answers

You have to use a formatter element inside the junit task. The formatter will create a report file by default, but you can force it to print the results on screen. You can use two formatters: one for output to screen, another for output to file.

Note that you no longer need the attributes printsummary="yes" and showoutput="true" in the junit task. The formatter is taking care of output now.

<project name = "TestPrj" default="unittest" basedir = ".">

<target name="unittest" >
    <junit>
        <classpath>
            <pathelement location="./junit-4.8.2.jar"/>
            <pathelement location="./ant-junit4.jar"/>
        </classpath>
        <formatter type="plain" usefile="false" /> <!-- to screen -->
        <formatter type="plain" /> <!-- to file -->
        <test name = "com.mytest.unittest.SimpleTest" todir="."/>
    </junit>
</target>

</project>

Read the junit page in the ant manual for more information.

like image 182
Lesmana Avatar answered Nov 10 '22 00:11

Lesmana


Could you post the snippet which calls junit from build.xml here? There can be several reasons why the build fails. Also, please post the testcase which you are trying to test.

EDIT: Do you need a static for a test?

public class utilTest extends TestCase {
  public void testfun() {
    assertTrue(true);
  }
}

EDIT: Try using the argument outfile

<target name="unittest">
    <junit printsummary="yes" showoutput="true">
        <classpath>
            <pathelement location="./junit-4.8.2.jar"/>
            <pathelement location="./ant-junit4.jar"/>
        </classpath>

        <formatter type="plain" />

        <test name="com.mytest.unittest.SimpleTest" outfile="./testresult" />
    </junit>
    <fail message="test failed" if="test.failure" />
</target>
like image 24
Shankar Raju Avatar answered Nov 09 '22 22:11

Shankar Raju