无法从 Mockito 访问 MyApplication 成员
Cannot access MyApplication members from Mockito
这是我的代码:
@Mock
MyApplication application;
@Before
public void setup() {
application = Mockito.mock(MyApplication .class);
}
@Test
public void createProducts() {
application.ormLiteDatabaseHelper.getProductDao().create(new Product());
}
我在这一行收到 NullPointerException。我的应用程序 class 在其 onCreate 中初始化了 OrmLiteDatabaseHelper,如何从模拟版本的 MyApplication 访问 ormLiteDatabaseHelper?
application
是一个 "mock" 对象。它只是伪装成“MyApplication
”。因此,对于方法 ormLiteDatabaseHelper
,它唯一可以 return 的是 null
,因此调用 getProductDao
将失败并显示 NullPointerException
.
如果你想让它return任何东西,那么你需要告诉你的模拟,例如通过...
OrmLiteDatabaseHelper ormLiteDatabaseHelper = ..something...;
Mockito.when( application.ormLiteDatabaseHelper ).thenReturn ( ormLiteDatabaseHelper);
只有这样你的 mock 才会知道 return 除了 null 之外的东西。当然,还有其他方法,但对于初学者...也许你还需要部分模拟,这将得到解释here,但没有进一步的信息,很难说。
此外,如果您编写 @Mock
,那么您应该使用正确的 @RunWith
注释或调用 MockitoAnnotations.initMocks(this);
而不是通过 Mockito.mock
手动创建模拟。如果要使用后者,则不需要@Mock
注解。
这是我的代码:
@Mock
MyApplication application;
@Before
public void setup() {
application = Mockito.mock(MyApplication .class);
}
@Test
public void createProducts() {
application.ormLiteDatabaseHelper.getProductDao().create(new Product());
}
我在这一行收到 NullPointerException。我的应用程序 class 在其 onCreate 中初始化了 OrmLiteDatabaseHelper,如何从模拟版本的 MyApplication 访问 ormLiteDatabaseHelper?
application
是一个 "mock" 对象。它只是伪装成“MyApplication
”。因此,对于方法 ormLiteDatabaseHelper
,它唯一可以 return 的是 null
,因此调用 getProductDao
将失败并显示 NullPointerException
.
如果你想让它return任何东西,那么你需要告诉你的模拟,例如通过...
OrmLiteDatabaseHelper ormLiteDatabaseHelper = ..something...;
Mockito.when( application.ormLiteDatabaseHelper ).thenReturn ( ormLiteDatabaseHelper);
只有这样你的 mock 才会知道 return 除了 null 之外的东西。当然,还有其他方法,但对于初学者...也许你还需要部分模拟,这将得到解释here,但没有进一步的信息,很难说。
此外,如果您编写 @Mock
,那么您应该使用正确的 @RunWith
注释或调用 MockitoAnnotations.initMocks(this);
而不是通过 Mockito.mock
手动创建模拟。如果要使用后者,则不需要@Mock
注解。