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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top