如何从Kotlin模拟静态Java方法,mockkStatic无法正常工作

问题描述

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

我正在使用下面的无效代码

它总是称为实际方法

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

java类中的实际方法

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

解决方法

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

class AESWrapper {

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

}

还有其他解决方案,例如PowerMock,但我记得您需要使用PowerMockRunner,这将来可能会限制您