JUnitPlatform中的before和after方法不起作用。
代码在下面。
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.runner.RunWith;
@RunWith(JUnitPlatform.class)
@SelectClasses({
MyControllerTest.class
})
public class AdminAppTest {
@BeforeAll
public static void setUp() {
System.out.println("setting up");
}
@AfterAll
public static void tearDown() {
System.out.println("tearing down");
}
}
我只想在方法之前和之后运行。
谢谢
答案 0 :(得分:1)
我可以引用JUnit 5 migration tipps:
@Before
和@After
不再存在;改为使用@BeforeEach
和@AfterEach
。
@BeforeClass
和@AfterClass
不再存在;改为使用@BeforeAll
和@AfterAll
。
但是这些注释应在测试类中使用。套件类中的方法不会以这种方式调用。而且您应该知道套件和JUnit 5仍在进行中的事实(请参见Issue 744)。
答案 1 :(得分:0)
您可能要检查 classpath 中是否存在 org.junit.jupiter:junit-jupiter-engine 。
但是,最新版本的构建工具(带有surefire插件的Maven,Gradle,Eclipse,IntelliJ等)支持 junit-platform 。因此,您不需要将JUnit4与向后兼容的运行器一起使用。
通常情况下,您会处于以下情况:
创建新项目,在这种情况下,您可以直接开始仅使用JUnit-Jupiter(并且在类路径中没有JUnit4)
将项目从JUnit4迁移到JUnit5。在这里,您将需要两个引擎:JUnit-Vintage和JUnit-Jupiter,JUnit-Vintage涵盖了使用JUnit4 API的现有测试的兼容性,JUnit-Jupiter提供了更大的灵活性,包括扩展的组成(同时具有Spring,Mockito和参数化测试功能)时间)
当您受到无法更改的环境(构建工具和/或IDE)的约束时,使用JUnit4运行程序运行JUnit-Jupiter测试确实是一个极端的情况。
有关更多详细信息,JUnit团队可提供示例项目:
希望这会有所帮助!