在类型为DefaultDependencyHandler的对象上找不到参数[org.hibernate:hibernate:5.3.7.FINAL]的方法intTestImplementation()

时间:2018-11-29 03:25:30

标签: gradle

我正在尝试在Gradle 5.0中配置集成测试。

我看到错误

Could not find method intTestImplementation() for arguments [org.hibernate:hibernate:5.3.7.FINAL] on object of type DefaultDependencyHandler.

我说intTestImplementation时可以看到gradle dependencies

我正在尝试添加一个依赖项

intTestImplementation 'org.hibernate:hibernate:5.3.7.FINAL'

task integrationTest(type: Test) {
    description = 'Runs integration tests.'
    group = 'verification'

    testClassesDirs = sourceSets.intTest.output.classesDirs
    classpath = sourceSets.intTest.runtimeClasspath
    shouldRunAfter test
}

sourceSets {
    intTest {
        java.srcDir file('src/integrationTest/java')
        resources.srcDir file('src/integrationTest/resources') // to add the resources
    }
}

2 个答案:

答案 0 :(得分:0)

您可以尝试以下两个选项之一,看看其中一些是否对您有用:

a)以这种方式声明的自定义sourceSets

sourceSets {
    intTest {
        java {
            srcDirs = ['src/integrationTest/java']
        }
        resources {
            srcDirs = ['src/integrationTest/resources']
        }
        compileClasspath += sourceSets.main.output + sourceSets.main.compileClasspath + sourceSets.test.compileClasspath
        runtimeClasspath += sourceSets.main.output + sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath
     } 
}

在这种情况下,您将以与测试依赖项相同的方式声明集成测试的依赖项。就是这样:

testImplementation 'org.hibernate:hibernate:5.3.7.FINAL'

b)intTestImplementation必须在自定义sourceSets之后声明:

sourceSets {
    intTest {
        java {
            srcDirs = ['src/integrationTest/java']
        }
        resources {
            srcDirs = ['src/integrationTest/resources']
        }
     } 
 }
dependencies {
    intTestImplementation 'org.hibernate:hibernate:5.3.7.FINAL'
}

答案 1 :(得分:0)

我收到了类似的消息,因为我在 sourceSets 之后定义了 dependencies