繁体   English   中英

JUnit-在@BeforeAll之前执行的方法和在@AfterAll之后执行的方法

[英]JUnit - method to execute before @BeforeAll and method to execute after @AfterAll

我有多个JUnit测试类,每个类都可以运行多个测试。 我有一个基础测试类,它是所有测试类的父类。 有什么方法可以在基本测试类中@BeforeAll@AfterAll之前和@AfterAll之后@AfterAll所有测试类执行一次的方法? 还是有任何可以实现的interface或可以扩展的类来解决此问题?

BaseJUnitTest.class

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;

@RunWith(JUnitPlatform.class)
public class BaseJUnitTest {

    // method to execute before all JUnit test classes

    @BeforeAll
    public static void beforeAll() throws Exception {

    }

    @AfterAll
    public static void afterAll() throws Exception {

    }

    @BeforeEach
    public void beaforeEachTest() {

    }

    @AfterEach
    public void afterEachTest() {

    }

    // method to execute after all JUnit test classes
}

SampleTest.class

public class SampleTest extends BaseJUnitTest {

@Test
public void test1() {
    System.out.println("SampleTest test1");
}
}

注意:我正在使用JUnit 5,尽管在这种情况下,我希望它与JUnit 4或5无关紧要

我认为您需要一个“测试套件”而不是基础测试类。 该套件将包含您的测试用例。 在此测试套件类上,使用@Beforeclass和@Afterclass包括需要在套件中进行的所有测试之前或之后完成的工作。

这是详细的答案jUnit 4.x中Suite执行之前和之后的挂钩

Salim的第一个答案是要走的路。 要在注释中回答其他查询,您将需要使用@SuiteClasses注释注册属于您的西装的类。

编辑:

反之,要注册测试用例,则应采用反射。 您将需要实现ClassFinder,TestCaseLoader和TestAll类。 您可以为每个项目定义TestCaseLoader,而TestAll可以是可分发jar的一部分。 可以在这里找到详细的示例: https : //www.javaworld.com/article/2076265/testing-debugging/junit-best-practices.html?page=2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM