首页 > 解决方案 > Mockito 3.4.0 静态模拟异常

问题描述

尝试模拟静态方法时出现以下异常。

对于 SettingsUtility,静态模拟已经注册在当前线程中要创建一个新的模拟,必须取消现有的静态模拟注册

@Before
fun setUp() {
    mockStatic(SettingsUtility::class.java) {
        `when` { SettingsUtility.method(app) }.thenReturn { "" }}
}

标签: androidmockitomockito-kotlin

解决方案


返回对象的 MockedStatic.close() 方法必须在完成测试时调用,否则模拟将在当前线程上保持活动状态。

我不确定它是否与它在 Java 中的完成方式相同。希望这个 Java 代码片段有帮助

private static MockedStatic<SettingsUtility> mockedSettings;

@BeforeAll
public static void init() {
    mockedSettings = mockStatic(SettingsUtility.class);
}

@AfterAll
public static void close() {
    mockedSettings.close();
}

推荐阅读