- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个测试类,里面有多个嵌套测试类。外部测试类使用实现 BeforeAllCallback 和 AfterAllCallback 的扩展。当执行外部测试类时,每个嵌套类都会调用这些接口(interface)的方法。这是预期的行为吗?我找不到任何明确指定这一点的文档。
外部测试类也有@BeforeAll 和@AfterAll 方法。这些在执行外部测试类时执行一次。我希望扩展程序具有相同的行为。
如果这种行为确实是预期的,有没有办法抑制它?
这是一个最小的代码示例。非自定义扩展,例如然而 SpringExtension 显示出相同的行为:
@ExtendWith(MyExtension.class)
public class SomeTest {
@BeforeAll
static void create() {
System.out.println("Call beforeAll of test class");
}
@AfterAll
static void destroy() {
System.out.println("Call afterAll of test class");
}
@Nested
class InnerTest1 {
@Test
void testingA() {
System.out.println("Test 1A");
}
@Test
void testingB() {
System.out.println("Test 1B");
}
}
@Nested
class InnerTest2 {
@Test
void testingA() {
System.out.println("Test 2A");
}
@Test
void testingB() {
System.out.println("Test 2B");
}
}
}
public class MyExtension implements BeforeAllCallback, AfterAllCallback {
public MysqlMockExtension() {
}
@Override
public void beforeAll(final ExtensionContext extensionContext) throws Exception {
System.out.println("Call beforeAll of extension");
}
@Override
public void afterAll(final ExtensionContext extensionContext) throws Exception {
System.out.println("Call afterAll of extension");
}
}
通向输出:
Call beforeAll of extension
Call beforeAll of test class
Call beforeAll of extension
Test 2A
Test 2B
Call afteeAll of extension
Call beforeAll of extension
Test 1A
Test 1B
Call afteeAll of extension
Call afterAll of test class
Call afteeAll of extension
最佳答案
观察到的行为的原因是,您添加到 Jupiter 中的测试类的所有扩展都会被其所有子类继承,无论是测试方法还是嵌套测试类。您可以做的是检查使用扩展的类是否是顶级类:
class MyExtension implements BeforeAllCallback {
@Override
public void beforeAll(final ExtensionContext extensionContext) throws Exception {
if (extensionContext.getTestClass().isPresent()) {
Class<?> currentClass = extensionContext.getTestClass().get();
if (isNestedClass(currentClass)) {
return;
}
}
System.out.println("Call beforeAll of extension");
}
private boolean isNestedClass(Class<?> currentClass) {
return !ModifierSupport.isStatic(currentClass) && currentClass.isMemberClass();
}
}
据我所知,Jupiter 没有机制将扩展限制在 @ExtendWith
注释的位置。您可以提出一个问题来请求此功能。
关于java - junit5 扩展的 BeforeAll/AfterAll 回调针对每个嵌套测试类执行。这是预期的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60774567/
本着this question from JUnit 3 to JUnit 4的精神, 是否有任何正则表达式列表到 有效地从 junit 4 API 迁移到 junit 5 API ,不管代码大小?
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我需要以下测试 @runwith(cache, memory) class CollectionA is -- this is a suite (aka folder) class Cache {
当尝试在JUNITTEST的内存数据库中使用derby时,出现以下异常。 java.sql.SQLNonTransientConnectionException: Database 'memory:t
我需要以下测试 @runwith(cache, memory) class CollectionA is -- this is a suite (aka folder) class Cache {
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How to run Junit testcases from command line? 如何在 Linu
可以将 Junitperf 与 junit4 一起使用吗?我有一个带有多个测试的简单 Junit4 测试类,我想对该类的单个测试进行 TimedTest。我该怎么做? 更清楚地说,我的 Junit4
我想将 JUnit 4 测试添加到使用 JUnit 3 测试套件(“AllTests”)来组织测试的遗留项目中。 测试已经用 JUnit 4 执行了,所以我知道 JUnit 4 测试在原则上是有效的。
我正在将我的代码库从 junit4 迁移到 junit5。我在我的测试用例中使用了 mockito。下面是我用于依赖项的不同版本。 5.2.0 1.2.0 1.10.19 or
我刚刚使用 qunit-reporter-junit 生成了以下 XML: 但是当我运行它时,我在以下位置找到了 xsd:http
我已经编写了一个自定义 JUnit 运行器,我希望它成为 eclipse 插件的一部分,该插件将使用该运行器启动测试,而无需将 @RunWith 注释应用于该类。我已经设法使用 org.eclipse
我发现我的Sonar实例5.1或5.1.1(带有最新的声纳运行器2.x)停止在项目的仪表板上显示部分单元测试信息(单元测试小部件)。 我拥有的属性是(在Gradle的sonarRunner> sona
我有一个 JUnit 测试。但是当我使用“Run as -> JUnit”时它会成功,而当我使用“Cover as -> JUnit”时它会失败。这是为什么?代码确实有问题。在代码中,我使用了一些遗留
这个问题在这里已经有了答案: How to test code dependent on environment variables using JUnit? (20 个答案) 关闭 8 年前。 我
当我们的临时服务器因每周维护而停机时,我们有许多集成测试失败。当临时服务器关闭时,我们会发送一个特定的响应,我可以在集成测试中检测到该响应。当我得到这个响应而不是测试失败时,我想知道是否可以跳过/忽略
我需要测试一个程序,它首先预处理一些数据,然后使用这些预处理过的数据计算几个不同的结果——为每个计算编写单独的测试是有意义的。 官方 JUnit 政策似乎是我应该在每次计算测试之前运行预处理。 我如何
JUnit 是否可以为每个测试方法添加描述文本,以便描述文本稍后出现在surefire/failsave xml 报告中!? 背景:我在受监管的环境中工作,必须编写大量文档、测试规范和测试报告。 JU
当 JUnit 中的断言失败时,我想做一些“自己的事情”。我想要这个: public class MyAssert extends org.junit.Assert { // @Overrid
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我想将参数从运行配置传递给我的 JUnit 测试。我如何到达 JUnits 的主要方法来访问这些参数?有谁知道如何做到这一点? 谢谢 最佳答案 您可以使用 -D 系统属性运行单元测试,并使用 Syst
我是一名优秀的程序员,十分优秀!