问题标签 [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.
junit4 - 类型不匹配 junit5 @ExtendWith
所以这可能是一个非常愚蠢的问题,但我刚开始将项目从 junit 4 迁移到 5 并看到 @RunWith() 不再存在。它被@ExtendWith 取代。所以我试着这样做:
我得到以下异常:“类型不匹配:无法从 Class 转换为 Class <? extends Extension>
我是一个非常血腥的初学者,不知道如何解决这个问题。所以也许有人可以帮助我或告诉我在哪里可以找到必要的信息。
谢谢你们。
spring-boot - 在 Junit5 扩展 Spring Boot 2.4 中注册模拟 bean
我正在尝试创建一个 JUnit5 扩展,它将在 Spring ApplicationContext 中注册一个 Mock。但我不知道如何访问具有“公共最终无效 registerBean(类 beanClass,供应商供应商,BeanDefinitionCustomizer...定制器)”的 GenericApplicationContext
任何人都可以帮忙吗?
java - 初始化错误失败 java.lang.ExceptionInInitializerError 在 TestWithResourcesExtension.java
尝试从 JSON 文件中检索数据,但在检索数据时遇到以下问题。
build.gradle 文件:
错误 :
java - 在 HierarchicalTestEngine 中更改容器 TestExecutionResult
注意:如果你从未见过测试引擎,一开始你可能会很困惑(至少对我来说是这样)。这里有一个例子。
在 JUnit5 中,可以创建一个TestEngine
可以发现和执行测试的自定义(不仅是标准的@Test
-annotated 方法)。这个扩展的文档在这里,但这篇文章肯定更详尽。关于这个高级主题的资源和演示很少,所以我尝试了一下。据我了解,基本上有两种方法:
- 实现接口的
discover
和execute
方法TestEngine
- 仅从方法扩展
HierarchicalTestEngine
和实现discover
我会说第二个是最干净的,即使我不确定你在执行阶段是否有同样的自由。
在第一种方法中,TestExecutionResult
为测试容器设置非常容易
在这种情况下,整个代码并不重要,containerDescriptor
是一个TestDescriptor
谁的getType()
回报Type.CONTAINER
。在实际代码中,我TestExecutionResult
根据容器包含的测试结果设置。
在第二种方法中,如何设置容器的测试执行结果?毕竟,实际上只执行了TestDescriptor
s with ,因此我可以轻松地操纵结果(覆盖方法)。我查看界面,看看是否有什么有用的东西,但我错过了。甚至是不够的,因为我只是收到容器的,而不是所有孩子的测试执行结果。getType() == Type.Test
Node.execute
Node
nodeFinished
TestDescriptor
目前,这是我的描述符的定义:
我当然可以调整它MyEngineExecutionContext
来存储一种包含所有结果的地图,但这似乎是在重新发明轮子。
额外的问题:容器何时TestExecutionResult
有意义?
java - 为异步方法编写 Junit 测试用例
我有一个异步方法,想编写一个单元测试用例,我将方法粘贴到这里,任何人都可以帮助为此编写测试用例..
java - JUnit 5 真的可以注入扩展实例吗?
文档中@RegisterExtension
提到了有关实例注入的一些内容:
扩展将在测试类被实例化后注册,并且在所有
TestInstancePostProcessor
s 都有机会对测试实例进行后处理(可能将要使用的扩展实例注入到带注释的字段中)。
JUnit 中是否有任何后处理器可以自动为扩展执行此操作,或者这只是在谈论人们将来可能构建的东西?
在我们的案例中,我发现我们的许多扩展都是这样的:
像 PicoContainer 这样的容器可以自动找出如何构造实例。
如果我们能写出来,那就太好了,
注释处理器或运行时注入器都可以填充其余部分。
这种扩展之间的依赖关系也对它们应该运行的顺序产生影响。
junit - 是否有推荐的方法来重用 JUnit 5 扩展的集合?
JUnit 5 似乎强烈建议不要使用继承来共享测试逻辑,而是说使用Extension
s。
因此,我们将事物重构为扩展。
我经常看到的是大量测试以编程方式添加相同的三个扩展。(这三个都是扩展,由于它们的性质,必须以编程方式添加......)
我可以实现一个添加这三个扩展的基类,但是我再次使用继承。
有没有更好的办法?
例如,这样的事情会很好:
junit5 - 无法并行运行 JUNIT5 集成测试
我们正在使用
六月 5.6
mvn surefire 故障安全插件 2.19
JDK 8
Guice 依赖注入
我添加了以下属性
我只看到为方法而不是类设置的并发模式
我们扩展了 JUNIT5 提供的 AbstractModule 并使用 beforeAll 回调在开始测试之前运行我们的服务。
有人能指出为什么我们不能并行运行课程吗
junit5 - 在测试用例中断言 System.out/err
我正在考虑通过创建扩展将旧的 junit4 扩展移植到 junit5。到目前为止,我失败的一个功能是使任何在 System.out 或 System.err 上写入的测试方法都失败,并将失败点指向该特定测试。
我尝试将 TestExecutionListener#reportingEntryPublished 与 junit.jupiter.extensions.autodetection.enabled=true 一起使用,然后我使用了该方法,但是此时实际上将测试状态更改为 FAILED 为时已晚。或者我可以吗?
我开始使用 BeforeAllCallback 和 AfterAllCallback 并进行 out/err 重定向并在字符串缓冲区上断言。我可能能够让它工作,但这似乎是我可能会搞砸的事情,并且从现在起几年后会发现错误:) 我们的 junit4 跑步者做了这样的事情,但它真的过于复杂,我不希望任何人尝试维护类似的东西。
有什么办法可以在junit5中很好地做到这一点?
junit5 - 如何测试junit5扩展?
我已经编写了几个扩展,并有“测试数据”测试用例来触发它们的功能,然后有一些测试会创建一个运行这些测试的启动器,以便验证扩展的行为是否符合预期(我们称它们为“启动器测试”)。我遇到的问题是“测试数据”应该使用扩展,但“启动器测试”不应该使用扩展,只运行普通的 junit5。
到目前为止,我一直无法让它工作,两种类型都将使用扩展。我要么想启用自动检测属性并将其从启动器中删除,但还没有找到任何 API。
我可以接受autodetect=false
,设置@ExtendWith(MyExtension.class)
在“测试数据”上,我认为这会使启动器测试本身不使用 MyExtension。但是当我尝试过时,两者仍然运行扩展。
那么,有什么方法可以让内部测试运行扩展而外部测试不使用它?如果我们在两个地方都启用了它,那么我并没有真正测试我期望的行为。