如何模拟Android ` Tasks.await()`?

如何模拟Android ` Tasks.await()`?,android,unit-testing,kotlin,mockito,task,Android,Unit Testing,Kotlin,Mockito,Task,因此,我正在编写一个方法来对与Firebase auth的交互进行单元测试-我已经成功地模拟了所需的所有其他内容,但我不确定如何模拟被测方法中对Tasks.wait(someTask.sometvalue 因为Tasks.await()是静态的,所以我不能真正模拟它 我可以模拟任务本身,但不能模拟对wait方法的调用。有没有什么方法可以欺骗Tasks.wait()让我认为任务是真实的,这样它就能正常工作 这里有什么我可以做的吗?据我所知,您需要PowerMockito,因为Mockito不能模拟

因此,我正在编写一个方法来对与Firebase auth的交互进行单元测试-我已经成功地模拟了所需的所有其他内容,但我不确定如何模拟被测方法中对
Tasks.wait(someTask.sometvalue

因为
Tasks.await()
是静态的,所以我不能真正模拟它

我可以模拟任务本身,但不能模拟对wait方法的调用。有没有什么方法可以欺骗
Tasks.wait()
让我认为任务是真实的,这样它就能正常工作


这里有什么我可以做的吗?

据我所知,您需要PowerMockito,因为Mockito不能模拟静态或最终类/方法

简而言之,您需要使用

@RunWith(PowerMockRunner.class)
@PrepareForTest(Tasks.class)
然后,您需要在测试方法(或
@之前的
)中启用静态或最终方法的模拟/存根

然后使用

when(Tasks.await()).then<Return|DoNothing|Throw>();
when(Tasks.await()).then();

要获得更全面的答案,请参见

如何创建一个接口,并在该接口中使用
静态
方法。现在将此接口作为依赖项在类中传递。模拟此接口。如果您可以共享一些代码,我可以向您展示如何传递接口

我在想,我可以以某种方式简单地模拟任务对象,使调用
await()
能够正常工作。我只是想知道这是否有可能/做得太多了。
when(Tasks.await()).then<Return|DoNothing|Throw>();