Istanza dell'oggetto JUnit TestCase
-
05-07-2019 - |
Domanda
È stata utilizzata una nuova (o diversa) istanza dell'oggetto TestCase
per eseguire ciascun metodo di test in un caso di test JUnit? O un'istanza viene riutilizzata per tutti i test?
public class MyTest extends TestCase {
public void testSomething() { ... }
public void testSomethingElse() { ... }
}
Durante l'esecuzione di questo test, quante istanze della classe MyTest
vengono create?
Se possibile, fornire un collegamento a un documento o codice sorgente in cui posso verificare il comportamento.
Soluzione
Non sono riuscito a trovare una risposta chiara nei documenti di JUnit sulla tua domanda, ma l'intento, come ha scritto anjanb, è che ogni test sia indipendente dagli altri, quindi una nuova istanza TestCase potrebbe essere creata per ogni test eseguire.
Se disponi di costose impostazioni di test (" infissi ") che desideri condividere su tutti i casi di test in una classe di test, puoi utilizzare @BeforeClass annotazione su un metodo statico per ottenere questo risultato: http: //junit.sourceforge .net / javadoc_40 / org / JUnit / BeforeClass.html . Nota, tuttavia, che è ancora possibile creare una nuova istanza per ogni test, ma ciò non influirà sui dati statici che il tuo metodo @BeforeTest ha inizializzato.
Altri suggerimenti
Sì, viene creata un'istanza separata.
Durante l'esecuzione del test, vengono create 2 istanze di MyTest.
Se vuoi un comportamento diverso, un'opzione è quella di utilizzare uno strumento simile chiamato TestNG ( http://testng.org / doc / ).
C'è un'istanza per ogni prova. Prova
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");
}
Il codice sorgente (incluso quello per le versioni più recenti - il tuo e il mio esempio è Junit 3) è su http: // www. junit.org
Se lo stai chiedendo perché sei preoccupato che i dati vengano inizializzati e reinizializzati nel tuo costruttore, tieni presente che il modo prescritto per inizializzare i dati dei casi di test è esclusivamente tramite setUp () e tearDown ().
Sì, sicuramente. Ho scoperto che non è stato possibile accedere ai dati memorizzati nelle variabili di istanza tra i test a causa di questo progetto.