Quiero ser capaz de ejecutar todas las pruebas en un proyecto de programación. Sé que Eclipse tiene una «Ejecutar como JUnit test» de la configuración que de alguna manera se agarra todas las pruebas en un proyecto y su ejecución. Hay alguna manera de que yo también agarrar la lista de pruebas de programación y de ejecución ellos? O hay algún buen camino para la construcción de un conjunto de pruebas que contiene todos los casos de prueba sin manualmente una lista de cada uno (de los 700+) de ellos?

He probado el «Nuevo… -> Suite de Prueba» opción en Eclipse, pero que parece funcionar sólo para JUnit 3, la identificación de las pruebas por parte de sus extiende desde TestCase

Las clases de prueba son JUnit 4, por lo que su única característica distintiva es la anotación, no de la convención de nomenclatura, no subclases de la Prueba.

Gracias de antemano!

InformationsquelleAutor alexloh | 2010-02-12

7 Comentarios

  1. 22

    A pesar de que en realidad no resuelve su problema inmediato, me parece muy útil, práctica general para crear suites y suites, suites, por ejemplo, para un paquete de algo como PackageFooSuite etc. y ensamblar estas suites de uno o más suites de nuevo, como ModuleFooSuite y tienen un nivel superior de la suite, como AllTestsSuite. De esta forma es fácil de ejecutar todas las pruebas en un solo paso, así como submódulo pruebas para el paquete actualmente estoy trabajando (y tienen las pruebas se ejecutan más rápido que si yo siempre iba a ejecutar a todos ellos):

    @RunWith(Suite.class)
    @Suite.SuiteClasses({ PackageFooSuite.class, PackageBarSuite.class} )
    public final class AllTestsSuite {} //or ModuleFooSuite, and that in AllTests
    • Tiendo a estar de acuerdo con usted. Por desgracia, las personas que estaban trabajando en esto antes de mí no, y a la izquierda tal vez de 700 o más guiones de pruebas que no estoy interesado en el manual de encordado, junto con la mano
    • Sí, bastante comprensible. Tal vez es realmente factible para automatizar esto sin demasiados problemas, como: para cada paquete/directorio, crear una suite de clase hecha de los nombres de todos los archivos en el paquete actual/directorio. Si se inicia desde la parte inferior del directorio, también podría ser relativamente sencillo incluir el generado suites para una sub-paquete en el nivel de arriba.
  2. 15

    Ninguna de las otras respuestas que hizo por mí. Yo había 40k pruebas que necesitaba para funcionar, por tanto manualmente listado de cada clase no era una opción.

    Lo hice con ClasspathSuite. Un conjunto de pruebas que se ejecuta todos los Junit4 y Junit3 casos de prueba en la ruta de clases es como sigue:

    import org.junit.extensions.cpsuite.ClasspathSuite;
    import org.junit.extensions.cpsuite.ClasspathSuite.*;
    import org.junit.runner.RunWith;
    import org.junit.runner.JUnitCore;
    import static org.junit.extensions.cpsuite.SuiteType.*;
    
    @RunWith(ClasspathSuite.class)
    @SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
    public class RunAllSuite {
            /* main method not needed, but I use it to run the tests */
            public static void main(String args[]) {
                    JUnitCore.runClasses(RunAllSuite.class);
            }
    }

    Necesitaba para ejecutarlo desde la línea de comandos, así que esto es lo que yo hice:

    1. Descargar cp-1.2.6.jar
    2. Crear el mencionado anteriormente RunAllSuite
    3. Compilar la clase, javac RunAllSuite.java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar
    4. ejecutarlo con el objetivo de pruebas en la ruta de clase, java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar;path/to/runallsuite/folder;target/classes;target/test-classes RunAllSuite

    Y eso es todo. Con el RunAllSuite anterior, en cualquier parte del código que usted puede hacer JUnitCore.runClasses(RunAllSuite.class), que ejecuta todas las pruebas en ruta de clase. Hay otras opciones de configuración, así que se explican en el ClasspathSuite página de inicio.

    Nota también de que la clase dada de arriba no se imprime nada. Si es necesario, puede hacer

    import org.junit.extensions.cpsuite.ClasspathSuite;
    import org.junit.extensions.cpsuite.ClasspathSuite.*;
    import org.junit.runner.RunWith;
    import org.junit.runner.JUnitCore;
    import org.junit.internal.TextListener;
    import static org.junit.extensions.cpsuite.SuiteType.*;
    
    @RunWith(ClasspathSuite.class)
    @SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
    public class RunAllSuite {
            public static void main(String args[]) {
                    JUnitCore junit = new JUnitCore();
                    junit.addListener(new TextListener(System.out));
                    junit.run(RunAllSuite.class);
            }
    }
    • «Yo tenía 40k pruebas que necesitaba para funcionar, por tanto manualmente listado de cada clase no era una opción.» Podría haber utilizado algún tipo de manipulación de texto programa para escanear los nombres de estos archivos de clase y crear el código para ejecutar la prueba? Que es, para cada uno .java archivo, imprimir una línea en la RunAllSuite de la clase que dice JUnitCore.main( $thatfilename.class ); … no es que tu código no funciona ya.
    • incluso si dejamos de lado la impracticabilidad, el tamaño de la clase tiene sus límites (64 caracteres, para ser exactos). No veo cómo todos los nombres de las pruebas hubiera ajuste.
    • ah, buen punto. Yo no sabía que había un límite duro! Además, su solución es muy elegante ya!
  3. 3

    Usted puede hacer esto con bastante facilidad desde dentro de maven utilizando el segura plugin: yo suelo limpiar/compilar/instalar mis proyectos desde la línea de comandos antes de compararlas para eclipse de uso (mvn eclipse:clean eclipse:eclipse) y se puede definir un conjunto de pruebas en su pom, que enumera todas las pruebas que desee ejecutar en masa cada vez que se ejecuta mvn install. No está llamando a través de programación, exactamente, pero sin duda se puede llamar a ellos en masa.

    • Hmm… yo no uso de Maven, pero voy a probar si se soluciona mi problema. Voy a marcar este si me funciona. Gracias!!
  4. 3

    En Eclipse (estoy usando 4.6.1) – clic Derecho en la carpeta de proyecto, seleccione «Ejecutar Como», seleccione «Prueba de JUnit»

    Va a ejecutar todas las pruebas en ese proyecto. Mismo para un paquete.

    • Gracias por la respuesta simplista. Muy apreciado.
    • No funciona cuando hay varios paquetes bajo src/test/java
  5. 2

    De la parte superior de mi cabeza con la Primavera:

    • Implementar un TypeFilter que coincide con las clases con métodos anotados con @Test (no olvide considerar las superclases)
    • Invocar classpath de escaneo en su parte superior-la mayoría de los paquete de prueba
    • Invocar el JUnitRunner con los resultados del análisis

    Más información sobre la ruta de clases de escaneo personalizados y filtros de tipo aquí

Dejar respuesta

Please enter your comment!
Please enter your name here