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

时间:2015-09-18 15:26:38

标签: java intellij-idea gradle testng

我使用的是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更改其位置?

1 个答案:

答案 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