【发布时间】:2018-03-05 00:24:01
【问题描述】:
我有一个app 模块和一个domain 模块。在我的domain 模块中,我有一个名为Repository 的接口。在我的app 模块中,我使用dagger 将一个实现注入到我的类中,这工作正常。
当我使用 kotlin 单元测试对其进行测试时,在运行时我得到一个 NoClassDefFoundError。
我也尝试将domain 模块包含在我的app 模块依赖项中,就像这样,但这也不起作用:
testImplementation project(':domain')
这是我当前的测试依赖项以及我如何包含模块
implementation project(':domain')
testImplementation 'junit:junit:4.12'
testImplementation 'com.nhaarman:mockito-kotlin:1.5.0'
在我的单元测试中,我像这样使用它,这可能是问题所在:
@Mock lateinit var mockRepo : Repository
【问题讨论】:
-
你应该使用
api project(':domain')而不是implementation project(':domain')吗? -
我不这么认为,因为没有依赖于我的
app模块的依赖项,它只在内部使用?除非我理解不正确? -
com.nhaarman:mockito-kotlin:1.5.0包含mockito-core作为依赖项?那应该是testApi com.nhaarman:mockito-kotlin:1.5.0- 如果testApi存在 - 当您通过com.nhaarman:mockito-kotlin:1.5.0库使用@Mock注释时。 -
尝试将其更改为
testApi但没有运气。也试过api project(':domain'),但也没有用。 -
为了排除依赖关系,我会使用
testCompile(虽然 3.0+ 已弃用应该可以正常工作)而不是testImplementation
标签: android gradle mockito kotlin