繁体   English   中英

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

[英]Making unit test run as integration test instead

我有一些单元测试和集成测试的项目。 我将它们分开,以便单元测试作为常规构建的一部分运行,而集成测试仅由特定的“ 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 }
}

在您的build.gradle中,您可以执行以下操作:

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

或者只是通过添加test.enabled = falsetest.enabled = false禁用测试任务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM