gpt4 book ai didi

java - 如何保证gradle中的TestNG将JDK添加到IntelliJ的类路径中?

转载 作者:行者123 更新时间:2023-11-30 03:15:48 24 4
gpt4 key购买 nike

我正在使用 gradle 插件 idea 并将 TestNG 添加到 依赖项 中,如下所示:

testCompile 'org.testng:testng:6.9.6'

在测试 block 中定义TestNG时

test {
useTestNG()
}

当我现在在 IntellJ 中同步 Gradle 并尝试添加测试时,我得到:

在项目模块中找不到 TestNG

实际上我需要手动将其添加到IntellJ的类路径中,而且即使添加后,我的测试文件中的依赖关系也无法解析:

error: package org.testng does not exist

导入静态org.testng.Assert.*;

我应该如何处理这个问题以使其完全自动化?

<小时/>

当我将 testCompile 更改为 compile 时,它似乎可以工作。我对 JUnit 进行了同样的尝试。效果一样。怎么可能? testCompile 扩展了compile。这与我的测试文件所在位置有关吗?如何使用 sourceSets 更改它们的位置?

最佳答案

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/**'
}
}
}

这里的tests包仅用于测试,其他包都在主程序中。

另请参阅:https://docs.gradle.org/current/userguide/java_plugin.html#N12323

关于java - 如何保证gradle中的TestNG将JDK添加到IntelliJ的类路径中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com