Diferencia entre revisiones de «Configuración de ejecución selectiva de tests»

De Dos Ideas.
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
Para poder correr selectivamente los test de integración de nuestras aplicaciones utilizamos la funcionalidad provista por la clase Assume de [[JUnit]]. La clase Assume contiene métodos útiles para afirmar las hipótesis sobre las condiciones en las que los resultados de los test son significativos. Un supuesto negativo no significa que el código está roto, pero si que los resultados de los test no proporciona ninguna información útil. Por defecto [[JUnit]] trata los test con las hipótesis negativas como ignorados.
 
Para poder correr selectivamente los test de integración de nuestras aplicaciones utilizamos la funcionalidad provista por la clase Assume de [[JUnit]]. La clase Assume contiene métodos útiles para afirmar las hipótesis sobre las condiciones en las que los resultados de los test son significativos. Un supuesto negativo no significa que el código está roto, pero si que los resultados de los test no proporciona ninguna información útil. Por defecto [[JUnit]] trata los test con las hipótesis negativas como ignorados.
 
  
 
Utilizando propiedades de línea de comando, en nuestro caso en la configuración del proyecto en [[Hudson]], podemos indicar si queremos o no correr determinados test.
 
Utilizando propiedades de línea de comando, en nuestro caso en la configuración del proyecto en [[Hudson]], podemos indicar si queremos o no correr determinados test.
  
 +
Propiedad:
 
-Dtest-sys-prop.correrIntegracion=NO
 
-Dtest-sys-prop.correrIntegracion=NO
  
 
<code java5>
 
<code java5>
 +
 
@BeforeClass
 
@BeforeClass
    public static void setUpOnce() throws Throwable {
+
public static void setUpOnce() throws Throwable {
 
         System.out.println("Se usarán los test de integración [SI/NO]: " + System.getProperty("correrIntegracion"));
 
         System.out.println("Se usarán los test de integración [SI/NO]: " + System.getProperty("correrIntegracion"));
 
         Assume.assumeTrue(System.getProperty("correrIntegracion") == null
 
         Assume.assumeTrue(System.getProperty("correrIntegracion") == null
 
                 ? true : System.getProperty("correrIntegracion").matches("SI"));
 
                 ? true : System.getProperty("correrIntegracion").matches("SI"));
 
}
 
}
 +
</code>
 +
 +
Como podemos ver en el ejemplo, por linea de comando se indica la propiedad "test-sys-prop.correrIntegracion", pero en el test se consulta por la propiedad “correrIntegracion”, esto se debe a que por defecto la tarea creada por Netbeans para correr los test de [[JUnit]] tiene la propiedad “fork” en true. En esta tarea podemos ver el tag "syspropertyset", el cual indica que todas las propiedades que tengan el prefijo "test-sys-prop." se pasen sin este prefijo al proceso iniciado por el fork para ejecutar la clase de test.
 +
 +
<code xml>
 +
<target name="-init-macrodef-junit">
 +
    <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/2">
 +
        <attribute name="includes" default="**/*Test.java"/>
 +
        <sequential>
 +
            <junit showoutput="true" fork="true" dir="${basedir}" failureproperty="tests.failed" errorproperty="tests.failed">
 +
                .
 +
.
 +
.
 +
                <syspropertyset>
 +
                    <propertyref prefix="test-sys-prop."/>
 +
                    <mapper type="glob" from="test-sys-prop.*" to="*"/>
 +
                </syspropertyset>
 +
                .
 +
.
 +
.
 +
            </junit>
 +
    .
 +
    .
 +
    .
 +
        </sequential>
 +
    </macrodef>
 +
</target>
 
</code>
 
</code>

Revisión del 18:05 2 may 2011

Para poder correr selectivamente los test de integración de nuestras aplicaciones utilizamos la funcionalidad provista por la clase Assume de JUnit. La clase Assume contiene métodos útiles para afirmar las hipótesis sobre las condiciones en las que los resultados de los test son significativos. Un supuesto negativo no significa que el código está roto, pero si que los resultados de los test no proporciona ninguna información útil. Por defecto JUnit trata los test con las hipótesis negativas como ignorados.

Utilizando propiedades de línea de comando, en nuestro caso en la configuración del proyecto en Hudson, podemos indicar si queremos o no correr determinados test.

Propiedad: -Dtest-sys-prop.correrIntegracion=NO

@BeforeClass public static void setUpOnce() throws Throwable {

       System.out.println("Se usarán los test de integración [SI/NO]: " + System.getProperty("correrIntegracion"));
       Assume.assumeTrue(System.getProperty("correrIntegracion") == null
               ? true : System.getProperty("correrIntegracion").matches("SI"));

}

Como podemos ver en el ejemplo, por linea de comando se indica la propiedad "test-sys-prop.correrIntegracion", pero en el test se consulta por la propiedad “correrIntegracion”, esto se debe a que por defecto la tarea creada por Netbeans para correr los test de JUnit tiene la propiedad “fork” en true. En esta tarea podemos ver el tag "syspropertyset", el cual indica que todas las propiedades que tengan el prefijo "test-sys-prop." se pasen sin este prefijo al proceso iniciado por el fork para ejecutar la clase de test.

<target name="-init-macrodef-junit">

   <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/2">
       <attribute name="includes" default="**/*Test.java"/>
       <sequential>
           <junit showoutput="true" fork="true" dir="${basedir}" failureproperty="tests.failed" errorproperty="tests.failed">
               .

. .

               <syspropertyset>
                   <propertyref prefix="test-sys-prop."/>
                   <mapper type="glob" from="test-sys-prop.*" to="*"/>
               </syspropertyset>
               .

. .

           </junit>

. . .

       </sequential>
   </macrodef>

</target>