用于在gradle中执行的包测试

时间:2018-02-01 09:11:36

标签: java gradle testng

我有一个包含一系列测试的gradle项目,可以使用命令启动: gradlew clean:mymodule:test

我需要构建一个jar,可以以相同的方式执行并启动测试。我在这里找到了创建一个测试二进制文件的指令Creating a Jar of test binaries - Gradle

task packageTests(type: Jar) {
    classifier = 'tests'
    from sourceSets.test.output
}

但是生成的jar只包含测试类和资源,没有依赖库或主应用程序源代码。 如何创建可执行的测试jar?

1 个答案:

答案 0 :(得分:2)

如果我是你,我不会使用classifier='tests',因为它通常是为包含没有依赖项的测试类的jar保留的。可能uber-testsfat-tests更好,因为uber-jar和fat-jar是这种罐子的通用名称。你可以做点什么

task uberTestJar(type: Jar) {
    dependsOn testClasses
    classifier = 'uber-tests'
    sourceSets.main.output.each {
        from it
    }
    sourceSets.test.output.each {
        from it
    }
    configurations.testRuntime.each { File f ->
        if (f.name.endsWith('.jar')) {
            from zipTree(f)
        } else {
            from f
        }
    }
}

还有shadow jar plugin