如何使用Gradle运行JUnit测试?


95

目前,我有以下build.gradle文件:

apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDir 'src/model'
        }
    }
}

dependencies {
    compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
}    


的build.gradle文件是我的仓库在这里。我所有的主要文件都在src / model /中,它们各自的测试都在test / model中

如何正确添加JUnit 4 依赖项,然后在测试/模型文件夹中运行那些测试?

Answers:


104

如何正确添加junit 4依赖关系?

假设您要针对标准Maven(或等效版本)存储库进行解析:

dependencies {
    ...
    testCompile "junit:junit:4.11"  // Or whatever version
}

在测试/模型文件夹中运行那些测试?

您可以通过以下方式定义测试源集:

sourceSets {
    ...

    test {
        java {
            srcDirs = ["test/model"]  // Note @Peter's comment below
        }
    }
}

然后按以下方式调用测试:

./gradlew test

编辑:如果您使用的是JUnit 5,则还有更多步骤要完成,您应该遵循本教程


8
srcDirs = ["test/model"]更加精确,因为它摆脱了默认的测试源目录,而srcDir "test/model"添加了另一个目录。main源集相同。
Peter Niederwieser

47

如果您使用默认的gradle包结构设置项目,即:

src/main/java
src/main/resources
src/test/java
src/test/resources

那么您将无需修改sourceSet即可运行测试。Gradle将找出您的测试类和资源在src / test中。然后,您可以按照Oliver上面所述的方法运行。需要注意的一件事:设置属性文件并同时使用gradle和IDE运行测试类时要小心。我使用Eclipse,并且从中运行JUnit时,Eclipse选择一个类路径(bin目录),而gradle选择另一个类路径(build目录)。如果您编辑资源文件,并且在测试运行时看不到您的更改,则可能导致混乱。


2
要将Eclipse构建文件定向到与Gradle相同的目录(可以防止出现一些令人沮丧的错误):项目->属性-> Java构建路径->默认输出文件夹:将“ bin”替换为“ build”。但是...根据我的经验,这似乎总是令人意外地习惯,每隔一段时间就会“滑回”默认的“ bin”。很高兴知道是否存在让Eclipse默认使用“ build”的方法。
麦克啮齿动物,

2
@麦克啮齿动物,只要我知道它是明确鼓励共享相同的构建路径为Eclipse和gradle这个(见例如discuss.gradle.org/t/...
mtraut

好的,我纠正了!...而且我想编译成相同的目录没有任何好处。在大多数情况下,eclipse构建器功能只是一个验证工具:“糟糕,由于x,y和z不会编译”。
麦克啮齿动物,

1
@DivDiff我的src文件夹结构的设置方法与上述相同,但是当我进行gradle测试时,它什么也没做。它根本无法运行我的测试。任何想法?
Gaurav

@Gaurav,我邀请您加入聊天室,以便我们离线讨论。
DivDiff

15

如果您使用Spring Initializr创建了项目,则应正确配置所有内容,然后运行所有需要做的...

./gradlew clean test --info
  • --info如果您不想看到测试输出,请删除。
  • clean如果您不想重新运行自上次更改以来已经通过的测试,请删除。

build.gradle在Spring Boot中测试所需的依赖项...

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

由于某种原因,测试运行程序不会告诉您这一点,但是会在中生成HTML报告build/reports/tests/test/index.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.