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

时间:2018-08-03 20:57:01

标签: android unit-testing kotlin mockito task

因此,我正在编写一种方法来对与Firebase身份验证的交互进行单元测试-我已经成功模拟了所有其他需要的东西,但是我不确定如何模拟被测方法中对{{1 }}

因为Tasks.await(someTask).someValue是静态的,所以我不能真正嘲笑它。

我能够模拟任务本身,但不能模拟对await方法的调用。我是否可以通过某种方法诱使Tasks.await()认为任务是真实的,以使其正常运行?

在这里我能做些什么吗?

2 个答案:

答案 0 :(得分:2)

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

简而言之,您需要使用以下内容注释测试类

Type

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

@Before

然后使用

PowerMockito.mockStatic(Tasks.class);

有关更全面的答案,请参见this Post

答案 1 :(得分:0)

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