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

如何使用Gradle运行多个命名测试?

姬经义
2023-03-14

我知道怎么说

gradle test --tests mypackage.MyTest

但如何指定多个?

gradle test --tests mypackage.MyTest,mypackage.model.ModelTest,BasicTests

这似乎只是随机运行一个测试。

gradle test --tests mypackage.MyTest mypackage.model.ModelTest BasicTests

这告诉我

在根项目“MyProject”中找不到任务“MyPackage.Model.ModelTest”。

我读了很多手册和教程(和一些SO帖子),但没有找到明确的答案。但是我看到有人通过-tests“somePackage.*”作为参数,所以我想空格周围的引号可能会有帮助。

gradle test --tests "mypackage.MyTest mypackage.model.ModelTest BasicTests"

这不会很快失败,但不幸的是,它只运行列表中的第一个测试。

所以我想我只是被“-tests”中的复数误导了,没有办法给它一个列表,对吧?

共有1个答案

范甫
2023-03-14

关于Java&JVM项目中测试的文档文章非常清楚地说明了--tests选项是如何工作的。它只是一个包含筛选器,注册所有要执行的匹配测试,其方式与在test任务的filter块中使用includetestsmatch相同:

test {
    filter {
        includeTestsMatching 'org.gradle.internal.*'
    }
}

这也是参数名称中使用复数的原因,因为通配符允许包含任意数量的测试。

请注意,通配符“*”“.”包分隔符没有特殊的理解。它纯粹是基于文本的。因此--tests*.sometestclass将匹配任何包,无论其“深度”如何。

因为Gradle4.7可以使用一个简单的类名而不包含包信息,如果你用一个大写字母开始过滤器的话。

要包含不共享公共包结构的多个测试,您必须并且可以使用多个--tests参数,如文档中所述:

还要注意,可以提供多个--tests选项,所有这些选项的模式都将生效。

有关测试过滤器的更多信息可以在上面的链接和相关问题中找到:

如何在gradle上只运行一个测试类

正如关于您的一种方法不起作用的其他信息:

在命令行上执行Gradle符合以下结构。任务名称前后都允许有选项。

为了防止选项值和任务名称之间的混淆,并阻止任何shell干扰,您应该按照Haki先生在其博客中的建议,在引号之间定义筛选器。

 类似资料:
  • 问题内容: 我正在尝试使用gradle通过以下命令运行测试,但无法正常工作 我的测试套件如下所示 尝试运行以下命令的方法有效,但更糟糕的是,它每次运行两次测试。一次,然后再次在相同名称空间的测试套件下 我可以删除测试套件并以这种方式进行操作,但是我想更好地了解这里发生了什么以及为什么我不能告诉它直接运行测试套件。 问题答案: 以下为我在本地工作。 与所使用的更高级的过滤方法相比,这实际上使用了不同

  • 问题内容: 目前,我有以下 build.gradle 文件: 这 的build.gradle 文件是我的仓库 在这里 。我所有的主文件都在 src / model /中 ,它们各自的测试在 test / model中 。 如何正确添加JUnit 4 依赖项 ,然后在 测试/模型 文件夹中运行那些测试? 问题答案: 如何正确添加junit 4依赖关系? 假设您要针对标准Maven(或等效版本)存储库

  • 当前我有以下build.gradle文件: 此build.gradle文件用于我的存储库。我的所有主文件都在src/model/中,它们各自的测试都在test/model中。

  • kotlintest测试从Intellij启动时运行得非常好,但当我尝试使用gradle test task命令运行它们时,只会找到并运行我的常规JUnit测试。 kotlintest代码: build.gradle:

  • 并将我的文件保存如下: Runner类: 把这个放到我的大楼里。格雷德尔: 但我得到的回应是: 但是,我不能看到我的测试是否通过。我做错了什么? 分级版本:2.14.1

  • 我有一个用gradle构建的大型代码库。我有几个JUnit测试,在构建时运行。 罐子 问题:我如何使用jar提供测试,并允许它们像运行jar一样从命令行运行? 我在SO上找不到任何关于使用gradle分发测试的信息,所有的命令行JUnit示例都不够,因为它们需要手动输入类路径,并且依赖项的数量很大(因此使用gradle Fatjar)。