[英]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.