如何使用Gradle运行JUnit测试?

时间:2013-12-20 15:34:38

标签: java gradle junit4 build.gradle

目前我有以下 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 文件适用于我的存储库here。我的所有主文件都在 src / model / 中,它们各自的测试都在 test / model 中。

如何正确添加JUnit 4 依赖,然后在 tests / model 的文件夹中运行这些测试?

5 个答案:

答案 0 :(得分:82)

  

如何正确添加junit 4依赖项?

假设您正在解决标准的Maven(或同等)回购:

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

在tests / model的文件夹中运行这些测试?

您以相同的方式定义测试源集:

sourceSets {
    ...

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

然后将测试调用为:

./gradlew test

编辑:如果您使用的是JUnit 5,则需要完成更多步骤,您应该遵循this tutorial

答案 1 :(得分:43)

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

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

然后您不需要修改sourceSets来运行测试。 Gradle会发现你的测试类和资源都在src / test中。然后你可以像Oliver上面说的那样运行。有一点需要注意:设置属性文件并使用gradle和IDE运行测试类时要小心。我使用Eclipse,当从它运行JUnit时,Eclipse选择一个类路径(bin目录),而gradle选择另一个(构建目录)。如果编辑资源文件,这可能会导致混淆,并且不会在测试运行时看到您的更改。

答案 2 :(得分:11)

如果您使用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')
}

出于某种原因,测试运行器没有告诉您这一点,但它会在build/reports/tests/test/index.html中生成HTML报告。

答案 3 :(得分:0)

testCompile 已弃用。与Gradle 7兼容:

dependencies {
...
   testImplementation 'junit:junit:4.13'
}

,如果您使用默认文件夹结构(src / test / java / ...),则测试部分就是:

test {
    useJUnit()
}

最后:

gradlew clean test

Alos看到:https://docs.gradle.org/current/userguide/java_testing.html

答案 4 :(得分:0)

如果除了所有现有的源集之外,还想添加一个源集进行测试,则在模块内,无论活动的口味如何:

sourceSets {
    test {
        java.srcDirs += [
                'src/customDir/test/kotlin'
        ]
        print(java.srcDirs)   // Clean
    }
}

请注意操作员+=,如果要运行集成测试,请将test更改为androidTest

GL