如何使用 Gradle 运行 JUnit 测试?

问题描述 投票:0回答:6

目前我有以下 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 dependency,然后在 tests/model 文件夹中运行这些测试?

java gradle junit4 build.gradle
6个回答
136
投票

如何正确添加 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,则需要完成更多步骤,您应该遵循 本教程


60
投票

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

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

那么您将不需要修改源集来运行测试。 Gradle 会发现您的测试类和资源位于 src/test 中。然后你就可以按照奥利弗上面所说的那样运行。需要注意的一件事:设置属性文件并使用 gradle 和 IDE 运行测试类时要小心。我使用 Eclipse,当从中运行 JUnit 时,Eclipse 选择一个类路径(bin 目录),而 gradle 选择另一个类路径(构建目录)。如果您编辑资源文件,并且在测试运行时看不到反映的更改,这可能会导致混乱。


33
投票

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

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

在 Spring Boot 中进行测试所需的依赖项

build.gradle
...

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

出于某种原因,测试运行程序不会告诉您这一点,但它会在

build/reports/tests/test/index.html
中生成 HTML 报告。


10
投票

这是针对 Kotlin DSL (build.gradle.kts) 并使用 JUnit 5(JUnit 平台):

tasks.withType<Test> {
    // Discover and execute JUnit4-based tests
    useJUnit()

    // Discover and execute TestNG-based tests
    useTestNG()

    // Discover and execute JUnit Platform-based (JUnit 5/JUnit Jupiter) tests
    // Note that JUnit 5 has the ability to execute JUnit 4 tests as well
    useJUnitPlatform()
}

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter:5.11.2")
    // ...
}

4
投票

testCompile 已弃用。兼容 Gradle 7:

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

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

test {
    useJUnit()
}

最后:

gradlew clean test

另请参阅:https://docs.gradle.org/current/userguide/java_testing.html


1
投票

如果除了所有现有的源集之外,您还想在模块内添加用于测试的源集,无论活动风格如何:

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

注意运算符

+=
,如果您想运行集成测试,请将
test
更改为
androidTest

GL

© www.soinside.com 2019 - 2024. All rights reserved.