【发布时间】:2021-10-14 23:21:43
【问题描述】:
在 JUnit 5 中执行的 @Nested 类被命令在封闭类中的所有测试之后运行。如果我的目标是运行单个封闭类并且它是嵌套类,我如何使用 maven 强制执行相同的行为?是否有命令行或 pom.xml 修改以使此示例测试通过?
package example;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
public class SomeTopLevelTest {
private static boolean nestedDone = false;
@Test
void test1() {
Assertions.assertFalse(nestedDone,
"Nested classes should execute after the enclosing tests");
}
@Nested
class SomeNestedTest {
@Test
void test2() {
nestedDone = true;
}
}
@AfterAll
static void recheck() {
Assertions.assertTrue(nestedDone, "Nested class should be executed");
}
}
但不在命令行中,如果我尝试指定名称:
mvn test -Dtest=example.SomeTopLevelTest
[ERROR] Failures:
[ERROR] SomeTopLevelTest.recheck:27 Nested class should be executed ==> expected: <true> but was: <false>
mvn test -Dtest=example.SomeTopLevelTest*
[ERROR] Failures:
[ERROR] SomeTopLevelTest.test1:14 Nested classes should execute after the enclosing tests ==> expected: <false> but was: <true>
【问题讨论】:
-
你能告诉它在哪里定义
@Nested classes that are executed in JUnit 5 they are ordered to run AFTER all the tests吗?此外,如果您有单元测试,则不应依赖任何订单,如果需要,您应该检查 Junit Jupiter 中的订单注释...... -
为什么在测试类中使用静态变量?目的是什么?
-
@khmarbaise “它的定义在哪里?”:我找到的官方消息来源是 stackoverflow.com/a/55482937/1374322 - 值得信赖,因为它来自项目维护者 sam-brannen。 “为什么是静态变量?” - 说明问题。
-
是的,我知道 Sam Brannon 是谁,但我永远不会依赖这种东西。二、Maven是如何配置的?您使用哪个 Maven 版本?您使用哪个版本的 maven-surefire-plugin?你的 pom 文件是什么样子的?
标签: java maven junit5 maven-surefire-plugin