如何在应用程序jar中包含我的测试

时间:2017-01-04 15:52:54

标签: java gradle

我在我的java应用程序中使用Gradle build。我的项目有弹性搜索综合测试。以下是我的gradle.build

jar {
    baseName = 'myproject'
    version = 'V.4.0.0'
    manifest {
        attributes 'Main-Class': 'com.myapp.Application'
    }
     from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}
test {
    systemProperties = System.properties
    systemProperty 'tests.security.manager', 'false'
}

当我给gradle build时,它执行了测试并创建了myproject-V.4.0.0.jar。但是当我运行

java -cp myproject-V.4.0.0.jar;junit-4.11.jar junit.textui.TestRunner com.myapp.test.testclassname

我发现com.myapplication.test.testclassname没有找到类异常。 我解压缩了myproject-V.4.0.0.jar,找不到测试类。

我的问题是,我如何在我的应用程序jar中包含测试类?

1 个答案:

答案 0 :(得分:1)

这是gradle java项目的故意行为。 jar是你的生产工件,所以通常你想在构建期间测试它,但你不想在生产中运行你的测试,所以我不建议这样做。话虽如此,有一种方法可以在gradle中完成,例如:

task myJar(type:Jar) {
from {sourceSets.main.output  + sourceSets.test.output}
}