我已经为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);
    }

08-04 17:22