Instanciación de objetos JUnit TestCase
-
05-07-2019 - |
Pregunta
¿Se utiliza una instancia nueva (o diferente) del objeto TestCase
para ejecutar cada método de prueba en un caso de prueba JUnit? ¿O se reutiliza una instancia para todas las pruebas?
public class MyTest extends TestCase {
public void testSomething() { ... }
public void testSomethingElse() { ... }
}
Mientras se ejecuta esta prueba, ¿cuántas instancias de la clase MyTest
se crean?
Si es posible, proporcione un enlace a un documento o código fuente donde pueda verificar el comportamiento.
Solución
No pude encontrar una respuesta clara en la documentación de JUnit acerca de su pregunta, pero la intención, como anjanb escribió, es que cada prueba es independiente de las otras, por lo que se podría crear una nueva instancia de TestCase para cada prueba. correr.
Si tiene una configuración de prueba costosa (" accesorios ") que desea compartir en todos los casos de prueba en una clase de prueba, puede usar @BeforeClass anotación en un método estático para lograr este resultado: http: //junit.sourceforge .net / javadoc_40 / org / junit / BeforeClass.html . Sin embargo, tenga en cuenta que aún se puede crear una nueva instancia para cada prueba, pero eso no afectará a los datos estáticos que su método @BeforeTest ha inicializado.
Otros consejos
Sí, se crea una instancia separada.
Mientras se ejecuta esa prueba, se crean 2 instancias de MyTest.
Si desea un comportamiento diferente, una opción es usar una herramienta similar llamada TestNG ( http://testng.org / doc / ).
Hay una instancia para cada ejecución de prueba. Intenta
public class MyTest extends TestCase {
public MyTest() { System.out.println("MyTest Constructor");
public void setUp() { System.out.println("MyTest setUp");
public void tearDown() { System.out.println("MyTest tearDown");
public void testSomething() { System.out.println("MyTest testSomething");
public void testSomethingElse() { System.out.println("MyTest testSomethingElse");
}
El código fuente (incluido el de las versiones más recientes: usted y mi ejemplo es Junit 3) se encuentra en http: // www. junit.org
Si está preguntando esto porque le preocupa que los datos se estén inicializando y reinicializando en su constructor, tenga en cuenta que la forma prescrita para inicializar los datos de sus casos de prueba es a través de setUp () y tearDown () exclusivamente.
Sí, definitivamente. Descubrí que no se podía acceder a los datos que almacené en las variables de instancia entre las pruebas debido a este diseño.