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

可以/应该在自定义JUnit5引擎中使用Jupiter扩展吗?

姚麒
2023-03-14

请问在自定义JUnit5 TestEngine中对扩展支持的建议是什么?

既然扩展来自于< code>junit-jupiter-api(而不是junit平台),那么尝试在定制引擎中支持它们是不是一个坏主意?(有什么简单的方法吗?)

我正在为JBehave测试编写一个自定义引擎,很容易地为Jupiter重用一些扩展(如TesttainersExpress)可能会很好,但另一方面,我想知道我正在考虑的事情是否出于某种原因不是一个坏主意...对此有一些建议吗?或者是否有一些简单的方法为自定义引擎提供扩展支持?(理想情况下,无需从jupiter引擎重新实现相同的代码)

共有1个答案

虞修平
2023-03-14

当最初构思引擎SPI和Jupiter扩展时,我们已经在那里了,我们不认为扩展是一个可以导出到其他引擎的概念。原因是Jupiter的扩展点与测试生命周期的细节紧密耦合。看看许多不同的扩展点,只有当实例创建、设置、拆除、禁用、过滤、命名、存储和上下文像在Jupiter中一样工作时,它们才有意义。

JBehave是否能够或愿意支持所有这些细粒度的细微差别和微妙之处?否则,您将遇到这样的问题:一些Jupiter扩展将如预期的那样与JBehave一起工作,有些略有不同,而另一些则完全不同。另一个明显的缺点是耦合到完整的Jupiter API。这就是我选择jqwik的原因。net提供自己的扩展API。

也就是说,有一些扩展注释对许多引擎来说是有意义的,例如< code>Disabled,并且应该将IMO从Jupiter API移到一个公共模块中。另一个想法是为某些类型的Jupiter扩展提供某种适配器,类似于Jupiter如何自动使用JUnit 4规则的子集。

 类似资料:
  • 我试图在我的Espresso检测测试中设置Dagger,以便模拟对外部资源(在本例中是RESTful服务)的调用。我在Robolectric中为我的单元测试所遵循的模式是扩展我的生产应用程序类,并用返回mock的测试模块重写Dagger模块。我试图在这里做同样的事情,但是在我的Espresso测试中,当我试图将应用程序强制转换为自定义应用程序时,我得到了一个ClassCastException。

  • 目前 Mars 支持自定义 xlog 的加密部分和长短连协议加解包部分。需要强调的是想要自定义这些扩展,需要在本地编译 Mars 才可以,编译方法见 Mars Android 接入指南 和 Mars iOS/OS X 接入指南 中的编译部分。切记,在自定义实现时,可以增加函数,但是不能删除头文件中已有的函数,也不能修改头文件中的函数原型。 自定义 xlog 加密 xlog 的具体实现可以参考微信终

  • 注意:TPR已经停止维护,kubernetes 1.7及以上版本请使用CRD。 自定义资源是对Kubernetes API的扩展,kubernetes中的每个资源都是一个API对象的集合,例如我们在YAML文件里定义的那些spec都是对kubernetes中的资源对象的定义,所有的自定义资源可以跟kubernetes中内建的资源一样使用kubectl操作。 自定义资源 Kubernetes1.6版

  • 用户自定义扩展是用户自己创建的 JavaScript 文件,对 Selenium IDE 现有的功能进行定制以及功能扩展。通常这种定制和扩展是以自定义命令的形式来体现的,当然也不仅限于命令。 这里可以找到很多有用的扩展。 注意:这部分信息已经过时,我们将很快修改。 也许最受欢迎的 Selenium IDE 扩展就是流程控制,流程控制扩展将提供 while 循环和条件判断。这个扩展是 goto_se

  • 当我们在开发某些东西时,经常会需要我们自己的 error 类来反映在我们的任务中可能出错的特定任务。对于网络操作中的 error,我们需要 HttpError,对于数据库操作中的 error,我们需要 DbError,对于搜索操作中的 error,我们需要 NotFoundError,等等。 我们自定义的 error 应该支持基本的 error 的属性,例如 message,name,并且最好还有

  • 我希望在iOS上创建一个BLE广告,我可以在字节级别上控制广告。 一个用例是模仿iBeacon广告。什么是iBeacon蓝牙配置文件(我想做广告,而我的应用程序是在后台,这就是为什么我不使用核心位置) 我看不到用核心蓝牙应用编程接口做到这一点的方法。这样做正确吗?是否有使用私有API或越狱的替代方案?