如何使用Mockito在java测试中模拟Kotlin单例函数调用?
通常,当我需要模拟静态方法时,我会执行以下操作:如何使用Mockito在java测试中模拟Kotlin单例函数调用?,java,kotlin,mockito,junit5,Java,Kotlin,Mockito,Junit5,通常,当我需要模拟静态方法时,我会执行以下操作: @Mock MockedStatic<AdOptions> adOptionsMockedStatic; @BeforeEach void beforeEach(){ adOptionsMockedStatic.when(() -> AdOptions.getFactory(any())).thenReturn(adOptionsFactoryMock); } 它不会触发任何生成问题,但会在运行时崩溃: org.
@Mock
MockedStatic<AdOptions> adOptionsMockedStatic;
@BeforeEach
void beforeEach(){
adOptionsMockedStatic.when(() -> AdOptions.getFactory(any())).thenReturn(adOptionsFactoryMock);
}
它不会触发任何生成问题,但会在运行时崩溃:
org.mockito.exceptions.misusing.invalidUseofMatchers异常:
此处检测到错误放置或误用的参数匹配器:
从技术上讲,Kotlin对象函数是实例方法,而不是静态方法。尽管你真的不应该模拟静态方法。在使用/创建库时,没有办法绕过模拟静态方法,特别是在Android上:(
@Mock
MockedStatic<InterstitialAdCallbackAndListeners> interstitialAdCallbackAndListenersMockedStatic;
@BeforeEach
void beforeEach(){
adOptionsMockedStatic.when(() -> AdOptions.getFactory(any())).thenReturn(adOptionsFactoryMock);
}