无法从Mockito访问MyApplication成员



这是我的代码:

@Mock
MyApplication application;
@Before
public void setup() {
    application = Mockito.mock(MyApplication .class);
}
@Test
public void createProducts() {
    application.ormLiteDatabaseHelper.getProductDao().create(new Product());
}

我在这一行得到一个NullPointerException。我的应用程序类在其onCreate中初始化OrmLiteDatabaseHelper,我如何从MyApplication的模拟版本访问OrmLiteDatabaseHelper?

application是一个"mock"对象。它只是伪装成一个"MyApplication"。因此,对于方法ormLiteDatabaseHelper,它唯一可以返回的是null,因此对其调用getProductDao将以NullPointerException失败。

如果你想让它返回任何东西,那么你需要告诉你的mock,例如通过…

OrmLiteDatabaseHelper ormLiteDatabaseHelper = ..something...;
Mockito.when( application.ormLiteDatabaseHelper ).thenReturn ( ormLiteDatabaseHelper);

只有到那时,您的mock才会知道返回除null之外的其他内容。当然,还有其他方法,但对于初学者来说。。。也许你也需要部分嘲讽,这将在这里解释,但如果没有进一步的信息,很难说。

此外,如果编写@Mock,则应该使用正确的@RunWith注释或调用MockitoAnnotations.initMocks(this);,而不是通过Mockito.mock手动创建mock。如果要稍后使用,则不需要@Mock注释。

相关内容

  • 没有找到相关文章

最新更新