我为我的 android 应用程序编写测试,我需要从我的类中模拟一个方法,该方法在我测试的方法中调用。这是我的课:public class MyFirebaseMessagingService extends FirebaseMessagingService {..... @Overridepublic void onMessageReceived(RemoteMessage remoteMessage) { if (!isAppOnForeground(this)) { DoSomeThing(); } } }public boolean isAppOnForeground(Context context) { return isAppOnForeground; }}我想在返回真假onMessageReceived时测试方法。isAppOnForeground我试试@Testpublic void onMessageReceived() {MyFirebaseMessagingService mockMyFirebaseMessagingService = org.mockito.Mockito.mock(MyFirebaseMessagingService.class);when(mockMyFirebaseMessagingService.isAppOnForeground(any(Context.class))).thenReturn(false);mockMyFirebaseMessagingService.onMessageReceived(remoteMessage);...}但是当我运行这个测试时,我没有看到方法调用onMessageReceived(断点不起作用)。我怎样才能嘲笑isAppOnForeground和打电话onMessageReceived?
1 回答
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
饮歌长啸
TA贡献1951条经验 获得超3个赞
你看不到onMessageReceived()方法正在运行,因为它没有。
MyFirebaseMessagingService mockMyFirebaseMessagingService = org.mockito.Mockito.mock(MyFirebaseMessagingService.class);
您正在创建一个模拟,一个空模拟,它对原始类的实现一无所知。
你想spy()改用。尝试这个:
MyFirebaseMessagingService myFirebaseMessagingService = new MyFirebaseMessagingService();
MyFirebaseMessagingService mockMyFirebaseMessagingService = org.mockito.Mockito.spy(myFirebaseMessagingService);
doReturn(false).when(mockMyFirebaseMessagingService).isAppOnForeground(any(Context.class));
mockMyFirebaseMessagingService.onMessageReceived(remoteMessage);
添加回答
举报
0/150
提交
取消