我已经为Android中的Notifications创建了一个测试,并且正在努力制作Mock对象。当我尝试在this post(which suggests wrapping Android notifications in a custom class)之后模拟notificationBuilder
时,我得到了一个空notificationBuilder
,这随后破坏了我的测试。
我显示此代码的最小代码是:
@Before
public void setUp() {
NotificationCompat.Builder notificationBuilder = Mockito.mock(NotificationCompat.Builder.class, Mockito.RETURNS_SELF);
}
其中notificationBuilder为null。如何获得Mock NotificationCompat.Builder作为返回值?我以为这就是
RETURNS_SELF
应该做的。使用空值时,我不能将Builder用作when()。then()的一部分进行进一步测试。
最佳答案
Mockito.mock(...)
返回null
,因为您没有嘲笑任何东西。您需要使用@Mock
注释声明一个全局变量,并在setUp()
方法中初始化您的模拟对象(您可以调用此对象,只要它上面带有@Before
注释即可)。试试下面的代码片段。
@Mock
NotificationCompat.Builder notificationBuilder;
@Before
public void setUp(){
notificationBuilder = Mockito.mock(NotificationCompat.Builder
.class);
}
@Test
public void testSharedPrefInjection(){
assertNotNull(notificationBuilder);
}