当前位置: 首页 > 知识库问答 >
问题:

如何在JUnit5中实现自定义运行程序

宰父飞翼
2023-03-14

是否有一些方法可以完全控制JUnit5中测试方法(包括之前/之后的方法)的执行,类似于JUnit4@RunAnd注释)?

我试图构建一个JUnit5 Arquillian扩展,但是由于Aquillian基本上需要在容器中执行每个测试,所以当从Junit5扩展运行Arquillian时,我遇到了一个问题。

我的代码在这里: BasicJunit5ArquillianTest.java

测试应该在一个单独的容器中运行所有方法(包括before/after),该容器可以是一个单独的JVM、远程或嵌入式服务器或任何隔离的对象。我的扩展从beforeach hook运行测试方法,使用Arquillian传输测试类,并使用LauncherFactory在容器中运行它。create(),收集测试结果并将其传回。

问题是测试方法执行了两次——通过正常的JUnit5执行和通过我的来自beForeeach钩子的Arquillian扩展。我想只通过Arquillian运行测试,跳过方法的正常执行。

这在JUnit5扩展中可能吗?或者我需要创建一个定制的测试引擎,可能扩展Jupiter测试引擎?

共有1个答案

朱修真
2023-03-14

没有扩展点(还没有?)它允许您定义测试运行的位置或方式。对于线程来说已经是这样了,这意味着无法在JavaFX应用程序线程或Swing EDT上运行它们。

您可能需要更深入地实现引擎,但这意味着用户必须在编写Arquillian测试或编写Jupiter测试之间进行选择。

更新:在这个答案被接受后发布的JUnit 5的新版本中,JUnit 5现在提供了InvocationInterceptor扩展点,这正是实现自定义运行程序作为扩展所需要的,它完全控制测试是如何执行的甚至可以用完全不同的东西替换测试方法的主体(例如,在不同的JVM中运行测试并返回结果)。

 类似资料:
  • 本文向大家介绍如何在jQuery中实现自定义事件?,包括了如何在jQuery中实现自定义事件?的使用技巧和注意事项,需要的朋友参考一下 自定义事件意味着您可以在jQuery中创建自己的事件。例如,创建一个自定义事件以在按下键盘上的任意键时触发警报框。 示例 您可以尝试运行以下代码以了解如何创建自定义事件,

  • 问题内容: 我收到此错误: sum()得到了意外的关键字参数’out’ 当我运行此代码时: 除了对批处理进行循环并编辑源代码之外,是否可以实现自定义指标? 问题答案: 问题是,并没有与NumPy阵列但无论哪种Theano或TensorFlow张量。这就是为什么您会收到此错误。 您可以定义自定义指标,但必须记住,其参数是那些张量,而不是NumPy数组。

  • 我有一个名为 Expect 的类,在你实例化它之后,你可以构建一个数据结构(为了简单起见,假设它是一棵树)。然后调用 run 方法,该方法遍历树,在每个节点上执行一些操作。这些操作需要一些时间才能完成,以便将来返回最终结果。在伪代码中,它类似于: 我想用它们通常的签名实现map和flatmap,但是它们作为参数接收的函数必须对将来返回的值进行操作。我看不出有任何方法可以实现这一点。

  • 我需要实现我的自定义DefaultComboxModel。这样做的原因是每次我打电话给 或者 或者 我看到它自动触发一个项目状态更改事件。这会导致一些随机项目自动从列表中选择。这不是我想要的,因为它用随机选择的项目填充可编辑的JTextField。 这是我在使用我的自定义Itemlistener中的Thread.dumpStack()进行调试时看到的stacktrace,它是我在调用上述方法时看到

  • 本文向大家介绍我们如何在Java中实现自定义HashSet?,包括了我们如何在Java中实现自定义HashSet?的使用技巧和注意事项,需要的朋友参考一下 HashSet实现了不允许重复值的Set接口。HashSet不是同步的,也不是线程安全的。当我们可以向HashSet添加任何重复元素时,add()方法返回false,并且不允许向HashSet添加重复元素。 语法 在下面的示例中,我们可以实现自

  • 我正在使用Spring开发一个应用程序。在Access Control Access一节中,我想使用Spring Security Acl(我是Acl的新手)。我想在我的应用程序中实现ACL基于两点: 应用程序应该具有以下五种权限:、、、和。 权限是分层的,当用户具有权限时,它应该能够,或者当用户具有权限时,它应该能够、和等。 更新: 我的应用程序是基于Spring MVC RESTful的。当用