jUnit 4 中的 TestSuite Setup

2022-09-01 06:48:30

我已经设法找到了如何在jUnit 4中制作TestSuite的方法,但我真的很想念在TestSetup中包装套件的v3可能性。

关于如何在jUnit 4中为一套测试用例执行一些@BeforeClass/@AfterClass设置的任何想法?

@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
    }
}

不幸的是,上面的代码片段不起作用。 仅在每个测试类的基础上工作。@BeforeClass


答案 1

这是我所拥有的,它运行良好。

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");
    }

}

这是我的测试套件 1(对测试套件 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 {}

这是我的测试课。创建 testcase1 和 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);
    }
}    

你应该有 5 类完整套件套件 1 套件 2 测试 1 测试2

并确保在构建路径中有 Junit。这应该运行!

这是输出

Master setup
TestCase1 setup
Master tearDown

答案 2

推荐