如何在Android项目的Java模块上使用Mockito 2模拟最终类?

lop*_*ael 1 java junit android mockito kotlin

我在Kotlin写了一个Android Clean Architecture项目,有3个模块:

  • 数据(Android库)
  • domaine(Java Library)
  • 演示文稿(Android应用程序

这三个模块都有使用junit编写的单元测试.但是对于Kotlin,默认情况下每个班级都是最终的.我很快就遇到了问题:如何使用mockito模拟最后一堂课

Mockito 2现在可以实现

它可以通过mockito扩展机制通过创建/mockito-extensions/org.mockito.plugins.MockMaker包含单行的文件来完成:

mock-maker-inline
Run Code Online (Sandbox Code Playgroud)

此解决方案在数据模块(Android库)和演示模块(Android应用程序)上运行良好,但不适用于我的domaine模块(Java库).

我知道,这个问题已经被问(如何嘲弄与一的Mockito final类,调用final类与静态的Mockito方法Mock对象),但我没有找到我要找的答案.

zsm*_*b13 16

默认情况下,您可以使用内联模拟方法,通过从正常的Mockito依赖项更改Gradle依赖项:

compile "org.mockito:mockito-core:$mockito_version"
Run Code Online (Sandbox Code Playgroud)

......以下内容:

compile "org.mockito:mockito-inline:$mockito_version"
Run Code Online (Sandbox Code Playgroud)

这样您就不必依赖于使用"资源文件夹中的文件"方法激活内联模拟,我发现这种方法有时会出现片状.