【问题标题】:How to mock static java method from kotlin , mockkStatic not working如何从 kotlin 模拟静态 java 方法,mockkStatic 不起作用
【发布时间】:2021-02-09 18:08:48
【问题描述】:

我想从 Kotlin 测试用例中模拟 java 类的静态方法。

我正在使用以下不起作用的代码。

它总是调用实际方法。

mockkStatic(Aes::class)
every { Aes.decrypt(PASSWORD, SECRET_KEY) } returns PASSWORD

java类中的实际方法:

public static String decrypt(String text, String secretKey) {}

【问题讨论】:

  • 你的测试用例是什么?
  • 对api调用嵌套私有方法有没有

标签: android unit-testing kotlin mockk


【解决方案1】:

如果没有其他方法,最好的策略是在静态方法周围使用包装器对象(例如静态方法属于第 3 方库)

class AESWrapper {

    fun decrypt(String text, String secretKey) {
        return Aes.decrypt(text, secretKey)
    }

}

还有其他解决方案,如 PowerMock,但你需要使用 PowerMockRunner,因为我记得这可能会限制你在未来

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多