web-dev-qa-db-fra.com

Configuration de TestSuite dans jUnit 4

J'ai réussi à découvrir comment faire une TestSuite dans jUnit 4, mais je manque vraiment la possibilité v3 d'envelopper une suite dans un TestSetup.

Avez-vous des idées sur la façon d'exécuter une configuration @ BeforeClass/@ AfterClass pour une suite de cas de test dans jUnit 4?

C'est à dire.

@RunWith(Suite.class)
@Suite.SuiteClasses({Test1.class, Test2.class})
public class MyTestSuite {
    @BeforeClass public static void setUpClass() {
        // Common initialization done once for Test1 + Test2
    }
    @AfterClass public static void tearDownClass() {
        // Common cleanup for all tests
    }
}

Malheureusement, le fragment de code ci-dessus ne fonctionne pas. @BeforeClass ne fonctionne que pour chaque classe de test.

34
Rasmus

Voici ce que j'ai et ça fonctionne très bien.

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({ TestSuite1.class, TestSuite2.class })
public class CompleteTestSuite {

    @BeforeClass 
    public static void setUpClass() {      
        System.out.println("Master setup");

    }

    @AfterClass public static void tearDownClass() { 
        System.out.println("Master tearDown");
    }

}

Voici ma suite de tests 1 (faites de même pour la suite de tests 2).

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(value = Suite.class)
@SuiteClasses(value = { TestCase1.class })
public class TestSuite1 {}

Et voici ma classe de test. Créez à la fois testcase1 et testcase2.

import static org.junit.Assert.assertEquals;

import org.junit.BeforeClass;
import org.junit.Test;

public class TestCase1 {

    @BeforeClass 
    public static void setUpClass() {      
        System.out.println("TestCase1 setup");
    }

    @Test
    public void test1() {
        assertEquals(2 , 2);
    }
}    

vous devriez avoir 5 classes completesuite suite1 suite2 test1 test2

et assurez-vous d'avoir Junit dans votre chemin de génération. Cela devrait fonctionner!

Voici la sortie

Master setup
TestCase1 setup
Master tearDown
51
user793623