如何在Android项目中的Java模块上模拟Mockito 2的最终课程?
我有一个Android Clean Architecture项目,在Kotlin中有三个模块:
- 数据(Android库)
- domaine(Java库)
- 演示(Android应用程序)
这3个模块都有用junit编写的unit testing 。 但是对于Kotlin,每个课程都是默认的最终课程。 我很快就遇到了问题: 如何用mockito来嘲笑最后一堂课
现在可以用Mockito 2
可以通过mockito扩展机制来完成,方法是创建包含一行的文件/mockito-extensions/org.mockito.plugins.MockMaker
:
mock-maker-inline
此解决方案在数据模块(Android库)和表示模块(Android应用程序)上运行良好, 但在我的domaine模块(Java库)上不起作用 。
我知道这个问题已经被问到( 如何用mockito来模拟最后一个类 , Mock对象用Mockito来调用最终类的静态方法 ),但是我没有find我正在寻找的答案。
默认情况下,可以使用内联模拟方法,通过将Gradle依赖关系从普通Mockito依赖关系中更改:
compile "org.mockito:mockito-core:$mockito_version"
…以下内容:
compile "org.mockito:mockito-inline:$mockito_version"
这样你就不必依靠激活内联嘲笑“资源文件夹中的文件”方法,有时我发现它是片状的。
Mockito的MockMaker只能用于unit testing(在JVM上运行)。 对于在测试测试(androidTest)中嘲笑Kotlin类的用户,请尝试使用DexOpener库。 它使Kotlin类,属性和方法open
,允许他们嘲笑。