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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top