问题标签 [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 投票
5 回答
8183 浏览

java - JUnit5 - 如何在 AfterTestExecutionCallback 中获取测试结果

我写 JUnit5 扩展。但我找不到如何获得测试结果的方法。

扩展看起来像这样:

任何提示如何获得测试结果?

0 投票
1 回答
798 浏览

java - 如何创建自定义 JUnit5 扩展

是否可以像我@Rule在 JUnit4 中创建的那样创建自定义扩展?

然后,我可以使用JUnit5在测试类中执行此操作

但我想你现在可以@ExtendWith(MyExtension.class)吗?

编辑:我的扩展示例以防@nullpointer 链接消失。谢谢。

0 投票
2 回答
2444 浏览

java - JUnit 5,将信息从测试类传递到扩展

我正在尝试为 Junit5 编写类似于 Junit4 的扩展,但我无法掌握如何在新的(无状态)扩展系统中做到这一点。

以前版本的想法是用户可以将信息传递给扩展类,从而改变它的行为方式。这是一个伪片段,大致显示了用于做什么:

现在,我知道如何操作 JUnit 5 扩展,使用哪些生命周期等。但我不知道如何赋予测试编写者使用 JUnit5 修改我的扩展行为的能力。任何指针表示赞赏。

0 投票
4 回答
1931 浏览

java - 检查 JUnit 扩展是否抛出特定异常

假设我开发了一个不允许测试方法名称以大写字符开头的扩展。

现在我想测试我的扩展是否按预期工作。

如何编写测试来验证执行第二种方法的尝试是否会引发带有特定消息的 RuntimeException?

0 投票
1 回答
1229 浏览

junit5 - 将参数设置为 JUnit5 扩展

我想知道如何通过测试配置扩展。

场景:测试提供了一个应该在扩展中使用的值。

当前解决方案:该值被定义为测试中的字段,并由扩展通过扫描所有声明的字段并选择正确的字段(反射)来使用。

问题:这个解决方案是非常间接的。使用此扩展的人必须了解扩展内部并声明正确的字段(类型和值)。错误可以引导开发人员走向正确的方向,但尝试/错误会有点痛苦。

有没有办法使用例如带有值的注释来配置junit5扩展?

0 投票
1 回答
6274 浏览

java - JUnit 5 - 为整个测试套件提供设置和拆卸

我的要求是对一组测试进行一些初始化,并在所有测试完成后将其清除。这些测试在一些测试类上旋转,因为它们并不密切相关,但需要一个共同的初始化。

@SelectClasses用来形成套件并尝试使用@ExtendWith应该处理预处理和后处理的自定义扩展。这不起作用,我不确定 JUnit 中是否存在适当的解决方案。分享已经尝试过的示例代码。

套房:

扩大:

测试类 1:

测试类 2:

输出:

预期输出:

0 投票
1 回答
1643 浏览

java - JUnit 5:BeforeEachCallback 和 BeforeTestExecutionCallback 之间的区别

我找不到任何资源来解释JUnit Jupiter 扩展模型BeforeEachCallbackBeforeTestExecutionCallbackJUnit Jupiter 扩展模型之间的确切区别。(我当然也对“After”变体感兴趣)

据我了解,以下时间表描述了正在发生的事情:

BeforeEach- BeforeTestExecution- Actual execution of the test- AfterTestExecution-AfterEach

我想这是BeforeTestExecution存在的,因此您可以在处理完所有BeforeEach回调之后但在实际测试执行之前执行代码。然而这对我来说仍然不清楚,因为每个人都可以使用BeforeTestExecution代替,BeforeEach并且这些回调的执行顺序又是随机的。

那么,BeforeTestExecution如果您同时在多个扩展中使用此回调,究竟是为了什么以及会发生什么?

0 投票
1 回答
360 浏览

spring - 在 SpringExtension 之前执行扩展

我正在尝试在我的应用程序中实现集成测试并拥有这样的测试类:

在整个 SpringExtension 开始工作并使用 Configurationc 类生成整个 Context 之前,有什么方法可以让 MyDockerExtension 执行一些代码?

我听说我们声明扩展的顺序是关键,但遗憾的是,实现的 MyDockerExtensionBeforeAllCallback, AfterAllCallback在测试方法之前和加载整个上下文之后执行。在这种情况下,使用 docker 启动容器为时已晚,因为由于加载了整个上下文,我的应用程序已经尝试连接到容器。

0 投票
1 回答
412 浏览

junit5 - 如何使用 TestInstanceFactory 管理实例的生命周期?

我正在使用 JUnit 5.3.0-RC1,试图为新TestInstanceFactory接口实现扩展。(我想从 Weld 获取对象以进行 CDI 注入等)

如果我实施TestInstanceFactory,我可以创建自己的实例。如果我也实施AfterEachCallback,我可以在每次测试后清理它们(关闭 Weld)。到目前为止,一切都很好。

但是:为此,我必须假设TestInstance.LifeCycle.PER_METHOD。如果测试类使用TestInstance.Lifecycle.PER_CLASS我将不得不检测到这一点并等到AfterAllCallback销毁 Weld 之前。但是ExtensionContext.getTestInstanceLifecycle被声明为Optional,所以我可能无法判断哪个生命周期处于活动状态。

有没有办法让 JUnit 简单地告诉我何时销毁实例?最好有一个类似 的扩展TestInstanceDestructor,只要 JUnit 使用完测试实例就会调用它。

其次,AfterEachCallback从不要求@Disabled测试,这意味着我无法清理通过我的TestInstanceFactory. 开始焊接有点贵,所以理想情况下,无论如何我都会跳过为禁用测试做这项工作。有什么方法可以告诉我正在为禁用测试创建哪些实例?

0 投票
1 回答
1349 浏览

junit5 - JUnit 5 扩展的配置

我正在将基于 JUnit 4 的内部工具升级到 JUnit 5。因此我必须为测试执行编写一个扩展。扩展的任务应该是确保外部应用程序的正确状态(如果它没有运行则启动它等)。要执行此任务,需要几个参数(来自命令行)。

我可以将这些参数存储在扩展上下文中吗?如果是这样,我如何在实际测试开始之前访问它?