before和after方法在JUnitPlatform中不起作用。
代码如下所示。
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");
}
}
我只是想前后跑的方法。
谢谢你
3条答案
按热度按时间bnlyeluc1#
我可以引用JUnit 5迁移提示:
@Before
和@After
不再存在;请改用@BeforeEach
和@AfterEach
。@BeforeClass
和@AfterClass
不再存在;请改用@BeforeAll
和@AfterAll
。但是这些注解应该在测试类中使用。suite类中的方法不会以这种方式调用。而且您应该知道suites和JUnit 5仍在进行中(请参见Issue 744)。
zz2j4svz2#
在遇到同样的问题后,我遇到了这个问题,@AfterAll和@AfterEach注解的方法没有被调用。在我的例子中,问题是JUnit 4的一个不正确的导入潜入了我的测试类,我导入的是org.junit. jupiter. api.Test,而不是org.junit. jupiter. api. Test。一旦我修复了这个问题,我的注解方法就很高兴地被再次调用了。
gfttwv5a3#
您可能需要检查org.junit.jupiter:junit-jupiter-engine是否在您的类路径中。
但是,最新版本的构建工具(带有surefire插件的Maven、Gradle、Eclipse、IntelliJ等)支持junit-platform。因此,您不需要使用具有向后兼容运行器的JUnit 4。
通常你可以在下列情况下:
使用JUnit 4 runner来运行JUnit-Jupiter测试实际上是一种极端情况,当您受到无法更改的环境(构建工具和/或IDE)的约束时。
有关更多详细信息,请参考JUnit团队提供得示例项目:
希望这对你有帮助!