¿Hay alguna manera de decirle a JUnit que ejecute un caso de prueba específico varias veces con datos diferentes continuamente antes de pasar al siguiente caso de prueba?Ejecutando el mismo caso de prueba JUnit varias veces con datos diferentes
Respuesta
echar un vistazo a junit 4.4 theories:
import org.junit.Test;
import org.junit.experimental.theories.*;
import org.junit.runner.RunWith;
@RunWith(Theories.class)
public class PrimeTest {
@Theory
public void isPrime(int candidate) {
// called with candidate=1, candidate=2, etc etc
}
public static @DataPoints int[] candidates = {1, 2, 3, 4, 5};
}
Tengo algunos casos de prueba que siguen el formato como testxyz(), testpqr() .mi clase de prueba existente extiende TestCase. – Giridhar
Thos no se están ejecutando si sigo este formato. – Giridhar
primero debe convertirlos a JUnit 4 (simplemente usando la anotación @Test, en la mayoría de los casos) – dfa
Siempre hago un método auxiliar que ejecuta la prueba basada en los parámetros, y luego invoco ese método desde el método de prueba JUnit. Normalmente esto significaría que un solo método de prueba JUnit realmente ejecutaría muchas pruebas, pero eso no fue un problema para mí. Si desea varios métodos de prueba, uno para cada invocación distinta, le recomiendo que genere la clase de prueba.
Parece que es un candidato perfecto para las pruebas parametrizadas.
Pero, básicamente, las pruebas parametrizadas le permiten ejecutar el mismo conjunto de pruebas en diferentes datos.
Estas son algunas buenas entradas de blog al respecto:
Aquí hay un post que escribí que muestra varias formas de ejecutar las pruebas repetidas veces con ejemplos de código:
Se puede utilizar el corredor @Parametrized, o use el corredor especial incluido en la publicación
recientemente comencé el proyecto zohhak. que le permite escribir:
@TestWith({
"25 USD, 7",
"38 GBP, 2",
"null, 0"
})
public void testMethod(Money money, int anotherParameter) {
...
}
Si no quiere o no puede utilizar corredor personalizado (. ej ya está utilizando otro corredor, como corredor Robolectric), puede probar este DataSet Rule.
Una manera mucho mejor (le permite tener más de un método de prueba) es el uso de JUnit con JUnitParams:
import junitparams.Parameters;
import org.junit.Test;
@RunWith(JUnitParamsRunner.class)
Public class TestClass() {
@Test
@Parameters(method = "generateTestData")
public void test1(int value, String text, MyObject myObject) {
... Test Code ...
}
.... Other @Test methods ....
Object[] generateTestData() {
MyObject objectA1 = new MyObject();
MyObject objectA2 = new MyObject();
MyObject objectA3 = new MyObject();
return $(
$(400, "First test text.", objectA1),
$(402, "Second test text.", objectA2),
$(403, "Third test text.", objectA3)
);
}
}
Usted puede obtener los junitparams proyectan here.
Si ya está utilizando un @RunWith
en su clase de prueba, probablemente necesite echar un vistazo a this.
2018-01-19 downvote. Por favor, tenga la cortesía de explicar su pensamiento. Puedes aprender algo –
- 1. ¿Cómo ejecutar el mismo caso de prueba para diferentes clases?
- 2. Ejecutando el mismo complemento varias veces en Maven
- 3. En Eclipse, ¿cómo puedo ejecutar un caso de prueba JUnit varias veces
- 4. Renderizar un bigote parcial varias veces con datos diferentes
- 5. Después de ejecutar un caso de prueba junit, ¿debería eliminar los datos de prueba relacionados con este caso de prueba?
- 6. Ejecutando una función de pepino varias veces
- 7. generador de caso de prueba junit
- 8. Maven: cómo filtrar el mismo recurso varias veces con diferentes valores de propiedad?
- 9. Directorio de datos de prueba con jUnit
- 10. coincide con el mismo carácter desconocido varias veces
- 11. RSpec: esperando un mensaje varias veces, pero con diferentes parámetros
- 12. Ejecutando varias aplicaciones Node (Express) en el mismo puerto
- 13. Simula un método estático varias veces usando JMockit dentro de una prueba JUnit
- 14. La consulta Hibernate da el mismo registro varias veces
- 15. Ejecutando exec-maven-plugin varias veces en una sola fase
- 16. ¿Puedo agregar el mismo DataRow a una DataTable varias veces?
- 17. ¿Hay alguna manera de hacer que Eclipse ejecute una prueba JUnit varias veces hasta que falle?
- 18. Repita la prueba de prueba mstest varias veces
- 19. ¿Cómo puedo comparar archivos en un caso de prueba JUnit?
- 20. JUnit agregar pruebas adicionales al caso de prueba
- 21. Ignorar error de aserción en un caso de prueba (JUnit)
- 22. Ejecutando pruebas JUnit con Maven bajo Eclipse
- 23. Servidor de prueba con JUnit
- 24. Especificar el orden de ejecución en el caso de prueba JUnit
- 25. Ejecutando dos pruebas con argumentos diferentes
- 26. Insertar el mismo valor varias veces al formatear una cadena
- 27. Ejecutando cada prueba JUnit en una JVM separada en Eclipse?
- 28. ¿Cómo lidiar con los datos de prueba en Junit?
- 29. Ejecutando varias declaraciones con SQLiteDatabase.execSQL
- 30. Diferentes instancias Singleton con pruebas JUnit
Al usar teorías (como lo señala @dfa) Junit tratará todas las pruebas como una sola prueba y dificultará determinar qué prueba ha fallado. Considerando que las Pruebas Paramétricas (como lo señala @ jjnguy) las tratan todas como pruebas diferentes, indicando claramente qué prueba falló. – mindreader