Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Junit report does not generate report if there is assertion error

Junit report does not generate report if there is assertion error Class to be tested

public class Math {

    static public int add(int a, int b) {

        return a + b;
    }

    static public int multiply ( int a, int b) {
        if(a==0&&b==0)
            return 0;;
        return a * b;
    }
}

Junit Test class

import junit.framework.*;

public class TestMath extends TestCase { 

  protected void setUp() { 

    // put common setup code in here
   }

  protected void tearDown() {

    // put common cleanup code in here
  }

  public void testAdd() {
    int num1 = 3;
    int num2 = 2;
    int total = 5;
    int sum = 0;
    sum = Math.add(num1, num2);
    assertEquals(sum, total);
  }

  public void testMulitply() {

    int num1 = 3; 
    int num2 = 7; 
    int total = 21;
    int sum = 0;
    sum = Math.multiply(num1, num2);
    assertEquals("Problem with multiply", sum, total);


    num1 = 5;
    num2 = 4;
    total = 20;
    sum = Math.multiply(num1, num2);
    assertEquals("Problem with multiply", sum, total);

  }
  public void testv(){
     Assert.assertEquals(1, Math.multiply(0, 0));
  }

}

I am using junit reporting to generate reports

The problem is if assertion fails the reports are not generate , the Ant Build fails . MY assumption is the if a assertion fails it should be listed in failures rather then error in Build result.

Ant XML

<project name="SampleJUnitTests" default="dist" basedir=".">
    <description>
        Sample JUnit Tests
    </description>
  <!-- set global properties for this build -->

  <property name="project_name" value="junitSamples"/>
  <property name="src" location="src"/>
  <property name="build" location="bin"/>
  <property name="dist"  location="dist"/>
  <property name="lib"  location="lib"/>
  <property name="res"  location="res"/>
  <property name="reports" location="reports"/>

  <!-- the names of various distributable files -->
  <property name="jar_name" value="${project_name}.jar"/>
  <property name="war_name" value="${project_name}.war"/>

    <!-- top level targets -->

  <target name="compile" depends="init" description="compile the source code " >
        <javac srcdir="${src}" destdir="${build}">  
            <classpath>
                <fileset dir="lib">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
        </javac>

  </target>

  <target name="dist" depends="compile" description="generate the distributable files " >

    <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
    <jar jarfile="${dist}/${jar_name}" basedir="${build}"/>

  </target>

  <target name="clean"
        description="clean up" >
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${build}"/>
    <delete dir="${dist}"/>
    <delete dir="${reports}"/>
  </target>

    <target name="run-tests" depends="compile" description="run your test suite" >
        <junit printsummary="yes" haltonfailure="yes" showoutput="yes" >
            <classpath>
                <pathelement path="${build}"/>
                <fileset dir="lib">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>            

          <batchtest fork="yes" todir="${reports}/raw/">
            <formatter type="xml"/>
            <fileset dir="${src}">
              <include name="**/*Test*.java"/>
            </fileset>
          </batchtest>
        </junit>    
    </target>

  <target name ="test" depends="run-tests">
        <junitreport todir="${reports}">
          <fileset dir="${reports}/raw/">
            <include name="TEST-*.xml"/>
          </fileset>
          <report format="frames" todir="${reports}/html/"/>
        </junitreport>
  </target>

  <target name ="run" depends="" description="if this project can be run, run it" >

  </target>

    <!-- supporting targets -->

     <target name="init" description="initialize the build environment" >
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create directory structures -->
    <mkdir dir="${build}"/>
    <mkdir dir="${lib}"/>
    <mkdir dir="${dist}/lib"/>
    <mkdir dir="${reports}"/>
    <mkdir dir="${reports}/raw/"/>
    <mkdir dir="${reports}/html/"/>
  </target>

  <target name="all" depends="clean, test">

  </target>

</project>

MY requirement is if assertion fails it should show in failure ? What do i need to do ?

like image 447
tharani dharan Avatar asked Nov 04 '22 22:11

tharani dharan


1 Answers

This question has been answered by Tharani in the comments... Answering it to make it from unanswered...

Change the value of haltonfailure="no" it will work as expedted ...

like image 118
Vishal Avatar answered Nov 09 '22 13:11

Vishal