当前位置: 首页 > 知识库问答 >
问题:

无法使用Mockito 2模拟最终Kotlin类

高墨一
2023-03-14

我无法使用mockito2模拟一个Kotlin final类。另外我还在用Robolectric。

这是我的测试代码:

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class Test {

    // more mocks

    @Mock
    MyKotlinLoader kotlinLoader;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    }
}
testCompile 'org.robolectric:robolectric:3.3.2'
testCompile 'org.robolectric:shadows-multidex:3.3.2'
testCompile 'org.robolectric:shadows-support-v4:3.3.2'
testCompile("org.powermock:powermock-api-mockito2:1.7.0") {
    exclude module: 'hamcrest-core'
    exclude module: 'objenesis'
}
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-inline:2.8.9'

mockito无法模拟/监视,因为:-final class

请注意,我使用的是Mockito Version2,我使用的是inline依赖项,它自动启用模拟最终类的功能。

共有1个答案

孙凌
2023-03-14

您可以为此使用Powermock,例如:

import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.spy;
import static org.powermock.api.mockito.PowerMockito.when;

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*" })
@PrepareForTest({FinalClass1.class, FinalClass2.class})
public class Test {
    @Rule
    public PowerMockRule rule = new PowerMockRule();

    ... // your code here
}
 类似资料:
  • 我正在将Powermock从我目前正在进行的项目中移除,因此我试图仅用Mockito(Mockito-Core-2.2.28)重写一些现有的unitary测试。 无法模拟/Spy类Com.ExternalPackagePath.ExternalClass Mockito无法模仿/监视,因为: 最终类 正如Mockito文档(https://github.com/Mockito/Mockito/wi

  • 我在github示例中发现了如何使用standart Mockito创建final类(BluetoOthgatt.class)实例: 但从Mockito常见问题: Mockito的局限性是什么 需要java 1.5+ 无法模拟最终类 ... 我检查了它是来自标准android-sdk的BluetoothGatt,所以它看起来像模拟的最终类。现在我尝试build project,以确保该测试工作正常

  • 问题内容: 我刚刚开始模拟应用程序的不同层。我到了一个地步,我的一个模拟对象在调用最终类静态方法时返回NPE。有没有解决的办法? 例如 问题答案: 您必须同时使用PowerMock和Mockito。 我不明白您的代码段正在尝试做什么,但是以下代码段允许类的静态方法返回模拟的对象。也许这会为您指明正确的方向 在课堂上: 在您的测试方法中:

  • 问题内容: 我上了最后一堂课,像这样: 我在其他这样的班级中使用这个班级: 在我的JUnit测试类中,Seasons.java我想模拟RainOnTrees该类。我该如何使用Mockito做到这一点? 问题答案: 仅在Mockito v2中可以模拟最终/静态类/方法。 将此添加到你的gradle文件中: 使用Mockito常见问题解答中的 Mockito v1,这是不可能的: `What are

  • 我试图在测试中模拟一个调用,但我得到了一个错误,因为它调用了真正的方法,而不是模拟它。 这是我的方法 } 这是我的测试课 测试实际上调用了受保护的方法config Setter,并在设置代理时失败。帮助我理解我在这里做错了什么。

  • 我有最后一节课。 org.mockito.exceptions.base.MockitoExc0019:不能模拟/间谍类改造2.响应Mockito不能模拟/监视以下内容:-最终类-匿名类-原始类型 如何使用Powermockito模拟响应类?