使用 JUnit 5 运行 Groovy 测试用例

2023-11-22

也许这很简单,但我在网上找不到任何示例:

我想使用 JUnit 5 运行作为 Groovy 类实现的单元测试。我当前的设置似乎启动了 JUnit 5,但无法检测到测试用例。 IntelliJ 识别测试,但无法运行它。如果我添加 Java 单元测试,它就会正确启动。

这是我现在所拥有的:

项目结构

src
  main
    groovy
      # production code
  test
    groovy
      UnitTest.groovy
build.gradle
...

构建.gradle

plugins {
    id 'groovy'
}

dependencies {
    compile localGroovy()

    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.1'
}

test {
    useJUnitPlatform()
}

单元测试.groovy

import org.junit.jupiter.api.Test

class UnitTest {

    @Test
    def shouldDoStuff() {
        throw new RuntimeException()
    }
}

我正在使用 Gradle 4.10。

有任何想法吗?


JUnit 要求所有测试方法都使用返回类型void。格罗维的def关键字被编译为Object类型,所以你的方法在 Java 中编译成类似这样的内容:

import org.junit.jupiter.api.Test

public class UnitTest {

    @Test
    Object shouldDoStuff() {
        throw new RuntimeException();
    }
}

如果您将此作为 Java 测试来尝试,它也不会找到测试用例。解决办法很简单——更换def with void和你的 Groovy 测试用例将正确执行。


src/test/groovy/UnitTest.groovy

import org.junit.jupiter.api.Test

class UnitTest {

    @Test
    void shouldDoStuff() {
        throw new RuntimeException()
    }
}

Demo:

asciicast

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JUnit 5 运行 Groovy 测试用例 的相关文章

随机推荐

  • 如何在 python 中使用reportlab、rtl 和 bidi 创建包含波斯语(波斯语)文本的 PDF

    我一直在尝试使用英语 波斯语 数字或它们的组合的内容创建 PDF 文件 波斯语文本存在一些问题 例如 1 文字必须从右向左书写 2 单词中不同位置的字符之间存在差异 意味着字符根据周围的字符改变形状 3 因为句子是从右向左阅读的 所以普通的
  • 如何使用 ggplot 绘制 T-SNE 聚类图

    以下是使用 IRIS 数据的 t SNE 代码 library Rtsne iris unique lt unique iris Remove duplicates iris matrix lt as matrix iris unique
  • 为单个 Jenkins 作业构建多个 Maven 配置文件

    我正在尝试在单个 Jenkins 作业中构建多个 Maven 配置文件 每个配置文件都会更改一些代码 然后通过执行创建一个 jarmvn Pdev install then mvn Pprod install在命令行中 根据 Maven 使
  • 不能写成 for 循环的 while 循环示例

    我知道 while 循环可以做 for 循环可以做的任何事情 但是 for 循环可以做 while 循环可以做的事情吗 请举个例子 是的 很容易 while cond S for cond S
  • 将新字段更新到现有文档

    是否可以将新字段更新到现有文档 例如 有一个包含多个字段的文档 例如 ID 99999 Field1 text Field2 text 该文档已经在索引中 现在我想在该文档中插入一个新字段 而不使用旧数据 ID 99999 Field3 t
  • 查找流星集合中的最新条目

    我的任务听起来很简单 但我无法确定如何编写这个 我只想找到插入集合中的最新项目并将其显示在我的流星应用程序上 我一直在使用 Collection find 但没有任何实际结果 这是我尝试过的最后一行 请记住这些名称是占位符 我的集合在我的代
  • 我如何在 make 目标之间传递 ENV 变量

    我在 makefile 中有这样的 target1 export var1 test MAKE target2 target2 echo var1 这是空的 我有其他依赖项 所以我想在第一个目标中设置变量 然后所有子依赖项应该能够访问该变量
  • 如何避免动态调度?

    我有以下特点 struct ArtistInfo some fields pub trait Fetcher fn fetch self artist String gt ArtistInfo 我想要有几个不同的获取器 可以在不同的情况下使
  • 从 ggplot 中删除 n 个图例

    我试图从下面的图中删除 n 图例 我猜这与stat部分geom bar 但我不完全确定它显示的内容 因此不知道如何删除它 我确实想要填充图例show legends FALSE不是正确的选择 抱歉 如果这是重复的 但之后 我找了很多找不到答
  • 为什么我收到“无法加载扩展。‘content_security_policy’值无效”?

    我正在尝试创建一个 chrome 扩展 我的清单文件是 name Alert Beep action manifest version 3 version 0 1 description Beeps if alert is called c
  • 带有 Fragments 和 FragmentActivity 的 TabHost

    我正在开发一个 Android 应用程序 我想使用 3 个选项卡进行导航 每个选项卡使用片段 但我不知道如何创建执行此操作的结构 我想单独添加每个片段 因为每个片段都不同 但我不知道在 FragmentActivity 中的哪里添加它们 我
  • 在 Android Studio (cmake) 中使用预构建的共享库

    我想在我的 Android 应用程序中使用 C 共享库 我试图遵循hello libs来自 Google NDK 样本的示例 但不知何故它不起作用 看来我的库没有打包到 APK 中 我发现的所有教程都在使用 mk 文件 但我想使用cmake
  • 我应该如何保护 iOS 中的 SQLite 数据库?

    我正在开发一个医疗保健 iOS 应用程序 我希望对用户的数据进行加密 这样如果他们的 iPhone 被盗 窃贼将无法访问他们的健康信息 合法所有者应该能够访问他们的信息 与这个问题 我正在考虑使用SQL密码加密整个数据库 并将SQLCiph
  • Netty客户端到服务器的消息

    这实际上是我在这里发表的第一篇文章 我已经尝试解决这个问题有一段时间了 但我终于调用了flag 并尝试在这个主题上获得一些帮助 所以我有一个客户端和一个服务器 它们是根据回显客户端 服务器和安全聊天客户端 服务器建模的 我对聊天的 SSL
  • Jackson 可以与 Spring MVC 3.0 一起使用来将 RequestBody 绑定到 Java Bean 吗?

    我有一个非常简单的问题 但我似乎找不到简单的答案 我让杰克逊开始连载爪哇豆 to JSON in the response using ResponseBody 但我没能序列化回来JSON to 爪哇豆 in the request usi
  • Azure API 管理 - 如何保护订阅密钥

    技术栈 API部署在WebApp中 部署 API 管理并将 WebApp 配置为 Web 服务 URL UI 在 Angular 应用程序中开发 该应用程序调用 API 管理端点以在 UI 上显示数据 实施 IP 身份验证以确保只有允许的用
  • 用于过滤列表的组件

    什么 Java Swing 组件适合创建如下所示的可过滤列表 这种类型的过滤最容易使用单列完成JTable 表具有内置功能来添加RowSorter which 提供排序的基础和过滤 也可以看看如何使用表格 排序和过滤 以下是过滤字体系列名称
  • Webusb:尝试在 Windows 上打开打印机时访问被拒绝

    我试图允许 POS Web 应用程序使用 Chrome webusb API 直接打印到 StarMicronics 或任何收据打印机 我正在使用这个例子here几乎完全一样 除了我修改了vendorId过滤到 StarMicronics
  • 将日期时间字符串转换为 R 中的 POSIXct 日期/时间格式

    考虑格式中的字符串 test lt YYYY MM DDT00 00 00 000 08 00 我的目标是将这些字符串转换为POSIXct格式 以便我可以绘制数据 我最初的想法是使用 as POSIXct test 但这似乎将日期时间截断为
  • 使用 JUnit 5 运行 Groovy 测试用例

    也许这很简单 但我在网上找不到任何示例 我想使用 JUnit 5 运行作为 Groovy 类实现的单元测试 我当前的设置似乎启动了 JUnit 5 但无法检测到测试用例 IntelliJ 识别测试 但无法运行它 如果我添加 Java 单元测