我使用的是gradle插件idea
,并将TestNG添加到dependencies
中:
testCompile 'org.testng:testng:6.9.6'
在测试块中定义TestNG
test {
useTestNG()
}
当我现在在IntellJ中同步Gradle并尝试添加测试时,我得到:
在项目模块
中找不到TestNG实际上我需要手动将它添加到IntellJ的类路径中,更重要的是,即使在添加它之后,我的测试文件中的依赖项也无法解决:
error: package org.testng does not exist
import static org.testng.Assert。*;
我该如何处理它以使其完全自动化?
当我将testCompile
更改为compile
时似乎有效。我为JUnit做了同样的尝试。同样的效果。怎么可能? testCompile
延伸compile
。这与我的测试文件的位置有关吗?如何使用sourceSets
更改其位置?
答案 0 :(得分:2)
Gradle有点像Maven:它希望在src/test/java
中找到你的测试。这有助于将测试与实际源代码分开,这样测试就不会进入最终的jar。
testCompile
确实扩展了compile
,但这只是意味着,来自compile
的每个依赖项也是testCompile
的依赖项,但不是另一种方式!
要更改源集,您可以执行以下操作:
sourceSets {
test {
java { srcDir 'src/main/tests' }
}
}
如果您希望所有代码都在src/main/java
文件夹中,则需要排除特定的包:
sourceSets {
main {
java { exclude 'tests/** ' }
}
test {
java {
srcDir 'src/main/java'
include 'tests/**'
}
}
}
此处测试包仅用于测试,而其他包在主程序中。
另请参阅:https://docs.gradle.org/current/userguide/java_plugin.html#N12323