使单元测试作为集成测试运行

时间:2015-04-14 22:25:01

标签: java groovy gradle

我有一些项目包括单元测试和集成测试。我将它们分开,以便单元测试作为常规构建的一部分运行,并且集成测试仅由特定的" integTest"任务。这一切都很好。

我有另一个项目,我没有写,也无法重构,它有一个单元测试,不是一个单元测试。我有一个用于此项目的库存Gradle构建脚本,但是我想添加我放在其他项目中的部分来作为集成测试来运行此测试。我还没有做到这一点,但我认为我在其他项目中所做的只会完成一半。我确定它会让我将该测试作为集成测试运行,但我还不知道如何使它不作为单元测试运行。

一个测试在" src / test / java"中,我现在要将它与我的" integTest"任务(我使用" src / integTest / groovy"之前,我想我可以添加" src / integTest / java"也)。如何删除该目录,使其不被默认"测试"任务,所以"测试"从来没有进行任何测试?

更新

虽然这篇文章的标题是关于将单元测试作为集成测试运行,但实际上我只需要知道如何从单元测试通道中排除现有测试,该测试已被解答。

有人看到这个标题可能想知道如何做到这一点,所以我将添加如何做到这一点的详细信息。

以下显示了我为构建脚本添加的所有内容:

// Without refactoring the source code of the project, this excludes the one test that looks like a unit test, but is
// actually an integration test.
test { exclude '**/*.*' }

sourceSets {
    integTest {
        java.srcDir file("src/test/java")
        resources.srcDir file("src/test/resources")
        runtimeClasspath = output + compileClasspath
    }
}

dependencies {
    integTestCompile sourceSets.main.output
    integTestCompile configurations.testCompile
    integTestCompile sourceSets.test.output
    integTestRuntime configurations.testRuntime
}

task integTest(type: Test) {
    testClassesDir  = sourceSets.integTest.output.classesDir
    classpath       = sourceSets.integTest.runtimeClasspath
    // This forces integration tests to always run if the task is run.
    outputs.upToDateWhen { false }
}

1 个答案:

答案 0 :(得分:0)

在build.gradle中,你可以这样做:

test { exclude '**/*.*' }

或只是通过添加第test.enabled = false

来禁用 test 任务
相关问题