2013-05-08 14 views
7

Invece di creare costantemente configuraitoni di debug identici per i miei casi di test, vorrei essere in grado di salvare semplicemente alcuni argomenti comuni in tutti i miei test di Junit, fare clic destro su un test specifico, quindi eseguire la configurazione di esecuzione singola. IE Vorrei una singola configurazione di debug che potesse prendere come argomento il caso di test corrente selezionato invece di richiedermi di specificarlo manualmente ogni volta nella configurazione di esecuzione di JUnit. Le mie uniche opzioni nella finestra di dialogo sembrano essere di specificare una singola classe di test o di eseguire tutti i test nel progetto. Di conseguenza, Eclipse è disseminato di dozzine di configurazioni di esecuzione per tutti i miei casi di test.Eclipse Junit esegue la configurazione che accetta la classe di test corrente selezionata come arg?

Invece di specificare una specifica classe di test, mi piacerebbe che specificasse una variabile come $ {container_loc} o $ {resource_loc} per la classe da eseguire come in this question. Esiste una variabile in Eclipse che specifica la classe Java attualmente selezionata che potrei inserire nel campo della classe di test nella finestra di dialogo?

Un esempio specifico in cui ciò è utile quando si eseguono i test dell'unità Lucene. Ci sono molti argomenti che puoi specificare per personalizzare i test, alcuni dei quali sono richiesti come -ea. Ogni volta che voglio testare un caso di test specifico in Lucene in Eclipse, devo configurare manualmente queste variabili nella finestra di dialogo di debug di Eclipse: - /.

risposta

1

Hai guardato i test parametrizzati in JUnit? Ecco un esempio:

import org.junit.Assert; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized; 
import org.junit.runners.Parameterized.Parameters; 

@RunWith(Parameterized.class) 
public class ParamTest { 
    @Parameters(name = "{index}: fib({0})={1}") 
    public static Iterable<Object[]> data() { 
     return Arrays.asList(new Object[][] { 
       { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } 
      }); 
    } 

    private int input; 
    private int expected; 

    public ParamTest(int input, int expected) { 
     this.input = input; 
     this.expected = expected; 
    } 

    @Test 
    public void test() { 
     Assert.assertEquals(expected, input); 
    } 
} 

Se si desidera solo per eseguire un test alla volta è possibile utilizzare le variabili private come in:

public class MultipleTest { 
    private int x; 
    private int y; 

    public void test1(){ 
     Assert.assertEquals(x, y); 
    } 
    public void test2(){ 
     Assert.assertTrue(x >y); 
    } 

    public void args1(){ 
     x=10; y=1; 
    } 
    public void args2(){ 
     x=1;y=1; 
    } 
    public void args3(){ 
     x=1;y=10; 
    } 
    @Test 
    public void testArgs11(){ 
     args1(); 
     test1(); 
    } 
    @Test 
    public void testArgs21(){ 
     args2(); 
     test1(); 
    } 
    @Test 
    public void testArgs31(){ 
     args3(); 
     test1(); 
    } 
    @Test 
    public void testArgs12(){ 
     args1(); 
     test2(); 
    } 
    @Test 
    public void testArgs22(){ 
     args2(); 
     test2(); 
    } 
    @Test 
    public void testArgs32(){ 
     args3(); 
     test2(); 
    } 
} 
Problemi correlati