项目结构为:
src
---main
---test
---java
---ExecutionClass
---TestNGMain.java
build.gradle类似于:
plugins {
id 'java'
}
apply plugin: 'application'
mainClassName = 'test.java.ExecutionClass.TestNGMain'
jar {
manifest {
attributes 'Main-Class': 'test.java.ExecutionClass.TestNGMain'
}
}
sourceSets {
test {
java {
srcDirs= ['src/test/java']
}
resources {
srcDirs= ['src/test/resources']
}
}
}
渐变构建-工作良好
gradle run-throws错误"找不到或加载主类">
默认情况下,应用程序插件只将main
源代码集视为要分发的应用程序代码。如果你真的想在测试源集中运行代码,那么一个选项是在主(坏主意(中包括测试源
sourceSets {
main{
java{
srcDir("src/test/java")
}
}
}
您案例中的mainClassName = "<package-name>.<class-name>"
mainClassName = "ExecutionClass.TestNGMain"
另一种方法是自定义main
分发版以包含测试文件。
可以使用JavaExec而不是application
插件从src/test运行类:
task runExample(type: JavaExec, dependsOn: "compileTestJava") {
classpath = sourceSets.test.runtimeClasspath
mainClass = "com.example.Example"
}
应用程序插件的目的不仅仅是运行一个类,而是对应用程序进行打包,以便可以部署、交付给客户等。通常不希望在运行时包含所有测试内容。
因此,尝试使用application
插件来运行src/test
中的任何内容通常都是个坏主意