2011-04-02 9 views
22

Traté de escribir una hormiga con la prueba de JUnit, pero llegue a tener menos resultado:tarea hormiga junit no informa detalladamente

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

sólo muestra los detalles de error y sin impresión, que especifico a continuación parámetro en build.xml también Intenté comenzar con ant -v or ant -debug, pero no tuve suerte. ¿Alguien puede ayudar?

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

hormiga 1.8.2, jdk1.6.0_20 sol, JUnit 4.8.2

para reducir el problema, he creado un proyecto independiente esta es mi 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> 

a continuación es 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 

¿Por qué no hay un resultado JUnit/detalle/Informe generado? ¿Para que en mi verdadero caso de error, no pueda solucionar mis preguntas?

Respuesta

40

Usted tiene que usar un elemento formatter dentro de la tarea junit. El formateador creará un archivo de informe por defecto, pero puede forzarlo a imprimir los resultados en la pantalla. Puede usar dos formateadores: uno para salida a pantalla, otro para salida a archivo.

Tenga en cuenta que ya no necesita los atributos printsummary="yes" y showoutput="true" en la tarea junit. El formateador se está ocupando de la salida ahora.

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

Leer la página junit en el manual de hormiga para más información.

+2

Esto funciona pero muestra los resultados en la pantalla una vez que se ejecutan todas las pruebas. Me gustaría verlos funcionar a medida que avanzan para que pueda controlar el progreso. ¿Alguna forma que conozcas para hacer eso? – crowmagnumb

+1

ver aquí: http://stackoverflow.com/questions/18293054/immediate-junit-test-logging-with-junit-ant-task – lesmana

1

¿Podría publicar aquí el fragmento que llama a junit desde build.xml? Puede haber varias razones por las cuales falla la compilación. Además, publique el caso de prueba que está tratando de probar.

EDIT: ¿Necesita una estática para una prueba?

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

EDITAR: Intente utilizar el argumento archivo_salida

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

\t \t \t \t hetaoblog

+0

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

+0

Por favor, elimine el modificador estático y avíseme si funciona bien. – Shankar

Cuestiones relacionadas