2011-10-17 21 views
7

Tengo un corredor personalizado que envía pruebas Junit a través de una conexión de socket a un servidor Junit que se ejecuta en otro hardware. Las pruebas realizadas según lo previsto con el siguiente objetivo:La ejecución de Junit a través de Ant no parece utilizar el corredor de clase personalizado

<target name="run"> 
     <mkdir dir="reports" /> 
     <junit fork="yes" haltonfailure="no"> 
      <test name="${CurrentTest}" /> 
      <formatter type="xml" /> 
      <classpath refid="mastersuite.classpath" /> 
     </junit> 

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

Sin embargo, cuando agrego en el < > elemento batchtest siguiente ...

<target name="run"> 
    <delete dir="reports" failonerror="false" />   
    <!-- Make the reports directory --> 
    <mkdir dir="reports" /> 

    <!-- Execute the tests and saves the results to XML --> 
    <junit fork="yes" printsummary="no" haltonfailure="no"> 
     <batchtest fork="yes" todir="${JunitReport.dir}"> 
      <fileset dir="${APITesting.classes}"> 
       <include name="test/api/**/*Test.class" /> 
      </fileset> 
     </batchtest> 
     <formatter type="xml" /> 
     <classpath refid="mastersuite.classpath" /> 
    </junit> 

    <!-- Compile the resulting XML file into an HTML based report. --> 
    <junitreport todir="${JunitReport.dir}"> 
     <fileset dir="${JunitReport.dir}"> 
      <include name="TEST-*.xml" /> 
     </fileset> 
     <report todir="${JunitReport.dir}" /> 
    </junitreport> 
</target> 

nada se envió más al hardware, lo que me lleva creer que mi anotación @RunWith (com.company.name.RemoteTestCaseRunner.class) no se cumple en el contexto de < por lotes >. ¿Hay algo que me olvidé de hacer, o tal vez eso debe hacerse adicionalmente para que se llame mi anotación @RunWith?

Las pruebas aún se están ejecutando y los informes se crean, y ciertas pruebas que no dependen de la plataforma se ejecutan y pasan, simplemente no las que requieren comunicación con los servicios en el hardware de destino.

ACTUALIZACIÓN he determinado que esto funciona bien cuando se utiliza @RunWith (Suite.class) se combina con @SuiteClasses ({}), pero no si explícitamente daría un caso de prueba. Entonces, realmente no estoy seguro de dónde está el problema.

ACTUALIZACIÓN Aunque no he encontrado nada sólido en esto, el comportamiento de mis pruebas parecen implicar lo siguiente: en base a la forma en que mis pruebas tienen el formato (que se extienden TestCase) Creo que la hormiga se está ejecutando mis casos de prueba como lo prueba Junit3. Como mencioné anteriormente, cuando ejecuto un conjunto de pruebas formateado para Junit4 (usando solo anotaciones) mis pruebas se ejecutan y se ejecutan según lo previsto. Parece que cuando paso el caso de prueba formateado Junit3 directamente es cuando mis anotaciones no se cumplen, lo que implica que se está utilizando el corredor Junit3.

Mi nueva pregunta es esta: ¿hay alguna manera de decirle explícitamente a hormiga que use el corredor Junit 4?

Respuesta

7

Parece que Ant automáticamente resuelve qué corredor usar en función de si su caso de prueba usa el Junit4TestAdapter. Acabé tener que añadir el siguiente método a todos mis casos de prueba:

public class MyTestCase extends TestCase 
    public static junit.framework.Test suite() { 
     return new JUnit4TestAdapter(MyTestCase.class); 
    } 
    ... 
} 

La mayoría de ustedes probablemente no necesitar extender TestCase, pero en mi caso esto es necesario porque Junit4 está actuando como un cliente a un Servidor Junit3

+2

Tengo que darte +100 por tu respuesta. ¡Después de 2 días de búsqueda, esto parece resolver mi problema! Mi publicación original http://stackoverflow.com/q/26848673/668650. –

+0

@KevinRave mismo aquí! De hecho, pude solucionar mi problema al no extender TestCase, pero no lo hubiera pensado sin la información aquí. – OpenSauce

+0

¡Me alegra que esto haya ayudado a alguien! –

Cuestiones relacionadas