【发布时间】:2019-06-02 01:56:29
【问题描述】:
我开始使用 Spock 测试框架,我的 build.gradle 依赖项部分如下所示:
dependencies {
testCompile "org.spockframework:spock-core:1.3-groovy-2.5"
}
我有一个(无用的)Spock 测试,需要创建一个存根:
def 'A test that will fail'() {
given: ''
def random = Stub(Random)
}
启动时,测试失败并出现给定错误:
CannotCreateMockException:无法为类 java.util.Random 创建模拟。非接口类型的模拟需要代码生成库。请在类路径上放置最新版本的 byte-buddy 或 cglib-nodep。
Spock documentation 中提到了这个错误,它是由 cglib 或 byte-buddy 在运行时不可用引起的。
考虑到spock-core's pom lists both byte-buddy and cglib as compile dependencies,为什么它们没有在运行时保留?换句话说,为什么我们需要在我们的 build.gradle 文件中显式添加以下运行时依赖?
testRuntime "net.bytebuddy:byte-buddy:1.9.3"
【问题讨论】:
标签: unit-testing gradle groovy dependencies spock