Ond*_*Mih 5 java unit-testing jboss-arquillian junit5
有没有办法在JUnit5中完全控制测试方法的执行(包括前/后方法),类似于JUnit4 @RunWith注释)?
我正在尝试构建一个JUnit5 Arquillian扩展,但由于Aquillian基本上需要在容器中执行每个测试,所以当从Junit5扩展中运行Arquillian时我遇到了问题.
我的代码在这里:BasicJunit5ArquillianTest.java
测试应该在一个单独的容器中运行所有方法(包括之前/之后),该容器可以是单独的JVM,远程或嵌入式服务器或任何隔离的.我的扩展从beforeEach钩子运行测试方法,使用Arquillian传输测试类并使用LauncherFactory.create()在容器中运行它,收集测试结果并将其传回.
问题是测试方法执行两次 - 通过正常的JUnit5执行和来自beforeEach钩子的我的Arquillian扩展.我想仅通过Arquillian运行测试并跳过方法的正常执行.
这在JUnit5扩展中是否可行?或者我需要创建一个自定义测试引擎,可能会扩展Jupiter测试引擎?
没有扩展点(还没有?)允许您定义测试在何处或如何运行。这对于线程来说已经是正确的,这意味着无法在 JavaFX 应用程序线程或 Swing EDT 上运行它们。
您可能需要更深入地实现一个引擎,但这意味着用户必须在编写 Arquillian 测试或编写 Jupiter 测试之间做出选择。
更新:在接受此答案后发布的较新版本的 JUnit 5 中,JUnit 5 现在提供了InvocationInterceptor扩展点,这正是将自定义运行器实现为扩展所需的,它可以完全控制测试的方式执行,甚至可以用完全不同的东西替换测试方法的主体(例如,在不同的 JVM 中运行测试并返回结果)。
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |