首页 > 解决方案 > 在 DefaultDependencyHandler 类型的对象上找不到参数 [org.hibernate:hibernate:5.3.7.FINAL] 的方法 intTestImplementation()

问题描述

我正在尝试在 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
    }
}

标签: gradle

解决方案


您可以尝试这两个选项之一,看看其中一些是否适合您:

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

推荐阅读