unitarias tutorial test software pruebas libre hacer empaqueta ejemplos ejemplo cuyo como junit

junit - tutorial - pruebas unitarias de software ejemplo



¿Cómo puedo hacer que mis pruebas JUnit se ejecuten en orden aleatorio? (4)

Me aseguraré de que no sean dependientes el uno del otro

Debe asegurarse de que este sea el caso sin depender de un orden de ejecución aleatorio. ¿Qué te hace temer que las dependencias puedan existir?

Tengo la estructura clásica para las pruebas, tengo un conjunto de pruebas de diferentes suites, como DatabaseTests, UnitTests, etc. A veces esas suites contienen otras suites, como SlowDatabaseTests, FastDatabaseTests, etc.

Lo que quiero es aleatorizar el orden de ejecución de las pruebas, así me aseguraré de que no dependan entre sí. La aleatorización debe ser en todos los niveles, como suite, debe barajar el orden de la clase de prueba, y la clase de prueba debe mezclar el orden del método de prueba.

Si es posible hacer esto en Eclipse, será lo mejor.


En general, lo que necesita hacer es escribir su propio corredor de prueba y en la clase de corredor de prueba agregar los métodos y ejecutar aleatoriamente cada prueba (asegúrese de no ejecutar una prueba dos veces).

Lea más sobre el marco de prueba y cómo escribir su propio corredor de prueba aquí: http://www.ddj.com/architect/184415674


https://github.com/KentBeck/junit/pull/386 presenta algunos pedidos pero no RANDOM . Probablemente no quieras esto realmente; las pruebas deben ejecutarse de manera determinista. Si necesita verificar que otras permutaciones de pruebas aún pasen, pruebe todas las permutaciones; o, si esto fuera poco práctico, introduzca una semilla "aleatoria" para barajar determinada por una variable de entorno o similar, para que pueda reproducir cualquier falla. http://hg.netbeans.org/main/file/66d9fb12e98f/nbjunit/src/org/netbeans/junit/MethodOrder.java da un ejemplo de esto para JUnit 3.


Tienes un Sortable pero no puedo ver cómo lo usarías .

Puede extender BlockJUnit4ClassRunner y hacer que computeTestMethods () devuelva una copia aleatorizada de super.computeTestMethods (). Luego use @ RunWith para configurarlo como el corredor a usar.

p.ej

package com..mlk; import java.util.Collections; import org.junit.runners.BlockJUnit4ClassRunner; import org.junit.runners.model.InitializationError; public class RandomBlockJUnit4ClassRunner extends BlockJUnit4ClassRunner { public RandomBlockJUnit4ClassRunner(Class<?> klass) throws InitializationError { super(klass); } protected java.util.List<org.junit.runners.model.FrameworkMethod> computeTestMethods() { java.util.List<org.junit.runners.model.FrameworkMethod> methods = super.computeTestMethods(); Collections.shuffle(methods); return methods; } }

Entonces

@RunWith(com..mlk.RandomBlockJUnit4ClassRunner.class) public class RandomOrder { @Test public void one() { } @Test public void two() { } @Test public void three() { } }