问题标签 [junit5-extension-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
471 浏览

junit5 - JUnit5 afterAll 回调在每个测试类结束时触发,而不是在所有测试之后触发

我有 15 个带有测试的 JUnit5 类。当我从 maven 运行它们时,afterAll()执行了 15 次,这会导致 15 条通知发送到 Slack Webhook。还有什么我只需要发送一个通知的吗?

0 投票
2 回答
1236 浏览

java - 是否可以在 Junit5 中禁用参数化测试基础参数

我有一个场景,我试图禁用参数化测试,但我不想禁用所有它们。考虑下面的模拟场景

是否可以编写一个DisableParameterized implements ExecutionCondition可以禁用基于某些元数据的参数化测试之一。

我可以在

是否displayName 有其他方法可以通用地提供某种元数据来禁用参数化测试?

如果我将它们标记为@Disabled,它会禁用所有 ParameterizedTests,以至于它甚至不会调用单个测试并在方法级别停止。

编辑:正如下面 Sam 所提到的,在提到的问题得到修复/实施并在更新版本中发布之前,不可能使用标准 API 来做到这一点。然而,我能够使用反射编写代码来实现我想要的,所以我在下面添加了一个答案

0 投票
3 回答
2502 浏览

java - Junit 5.5.1 和 5.5.2 突然无法运行测试:“进程以退出代码 -1 完成”;5.6.0-RC1 缺少一个类

我将 Junit 5.5.1 添加到一个使用 4.11 的项目中。我编写的测试直到今天都运行良好。今天,即使在执行任何测试类之前,所有测试都以退出代码 -1 失败。我不知道任何会导致这种情况的依赖关系发生变化。

我切换到 5.6.0-RC1,它似乎缺少一个扩展类 (TestInstancePreDestroyCallback)。

然后我尝试注意到 5.5.2 并切换到它:它与 5.5.1 有相同的问题。

我又试了一次 5.6.0-RC1 - 这次我注意到 jar 被命名为 5.6.0-M1。这个版本有效,所以我似乎没事,但那是一系列令人不安且不鼓舞人心的事件。

我的问题是:这是否发生在其他人身上,究竟是什么?

更新:原来 5.6.0-M1 中缺少的类存在于 5.6.0-RC1 中,所以我已经切换到它。我不再追究 5.5.* 的问题了。

0 投票
1 回答
1672 浏览

java - 在 JUnit 中自动注册扩展

我正在扩展JUnitParameterResolver以在测试方法中提供自定义参数。

然后在测试方法中使用它ExtendWith

它工作得很好但是我不喜欢所有需要这个扩展的测试都需要注释的想法,@ExtendWith(MyParameterResolver.class)是否可以在测试方法包含MyWrapper参数或注释时以编程方式在 Junit 中自动注册MyAnnotation注释?

0 投票
2 回答
707 浏览

mockito - junit5 +weld + mockito 扩展,如何注入@Context 对象

这是我的 REST 资源:

我已经使用 Junit 5 + Weld / Mockito 扩展构建了我的单元测试。

问题是 HttpServletRequest webRequest 始终为空,可能是因为未注入但它是上下文对象。

所以真正的问题是,我怎样才能生成一个 HttpServletRequest 模拟并作为 @Context 对象注入?

0 投票
1 回答
518 浏览

java - 如何将参数注入 JUnit 5 扩展

是否可以将 ParameterResolver 提供的参数注入(或以其他方式获取)扩展?

以下示例使用 Spring 和 RestAssured,但我正在寻找更通用的解决方案:

在测试类中,我可以执行以下操作:

如果我想把它放到一个扩展中,我会实现BeforeEachCallback

我知道我可以使用注释创建一个字段@LocalServerPort并使用 AnnotationSupport 获取它,但这仅适用于 Spring 扩展注入它。我正在寻找一种更通用的方法,该方法可以与使用参数解析器的其他扩展一起使用。

0 投票
0 回答
212 浏览

spring - 使用 Spring Beans 使 JUnit5 测试方法线程安全

我正在尝试使用 Spring 框架并行运行 JUnit 5 测试。

我有一个单例 bean:需要在大约 4 个地方(POJO 类)注入的 WebDriver。然后一个测试类将注入其中一些 POJO 类来运行测试方法。因为其他测试将按照相同的模型,使用相同的 bean(webdriver) 运行,所以当测试结束时,bean 会话结束,并且另一个并行测试运行失败,因为 bean 已被销毁。

如何使每个测试方法共享单例 webdriver(而不是跨测试套件执行)所以每个测试会话都有一个不同的 webdriver bean?

我创建了一个尝试这样做的扩展:

这会将每个测试放在线程池中,从而使测试线程安全(理论上)。但是 WebDriver bean 仍然在其他线程之间共享以用于其他测试方法。

我尝试制作 webdriver 原型,但是在一次运行 6 个测试时创建了太多的 bean,导致测试套件崩溃。

0 投票
3 回答
44463 浏览

java - 使用 PowerMockito 在 JUnit5 中模拟静态方法

在使用 JUnit5 和 PowerMockito 框架的 Mocking Static 方法方面需要帮助。

Powermock junit5 和 mockito2.x 不工作 RunnerTestSuiteChunker not found

和 pom.xml

我从这里跟随 Junit5 示例,1)https://www.baeldung.com/junit-5 2)Junit5 模拟静态方法

但是面临一个问题,我知道使用 powermock 的 Junit5 存在一个现有问题,但是任何人都知道使用 Powermock 使用 JUnit5 来模拟静态方法的任何其他方法。

0 投票
0 回答
65 浏览

java - Maven 插件中的 JUnit 扩展导出

我在一个 maven 插件项目中创建了一个 JUnit 扩展,我想在另一个项目中使用这个插件和 JUnit 扩展,但我不知道如何导出和导入 maven 插件和 JUnit 扩展的依赖项。

我试图plugin像这样导入其他项目

但它不起作用。感谢您的帮助

0 投票
0 回答
65 浏览

junit - 如何在 Junit5 单元测试中使用 @Mock 和 @Autowired?

我想同时使用@Autowired 和@Mock。例如,我不想模拟conversionService,我想自动装配它并模拟其他服务。