【发布时间】:2017-06-10 15:25:42
【问题描述】:
我刚刚开始在 android 中进行单元测试。我无法对android内部方法进行单元测试以通知数据已更改(notifyDataSetChanged),并且在这一点上我得到了空指针异常。我正在使用 mockito 和 power moockito 来模拟不同的对象。
public void RecyclerView(String value,Bitmap image) {
RecyclerViewAdapter adapter = new RecyclerViewAdapter(MainActivity.this);
recyclerView.setAdapter(adapter);// set adapter on recyclerview
adapter.notifyDataSetChanged();// Notify the adapter
}
我的单元测试是:
@RunWith(PowerMockRunner.class)
@PrepareForTest({MainActivity.class})
public class MainActivityTest {
@Mock
Bitmap bitmap;
@Mock
RecyclerView recycleview;
@InjectMocks
Activity activity;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mainactivity = new MainActivity();
}
@Test
public void PopulateRecyleViewTest() {
try {
final RecyclerViewAdapter abc = PowerMockito.mock(RecyclerViewAdapter.class);
PowerMockito.whenNew(RecyclerViewAdapter.class).withArguments(mainactivity).thenReturn(abc);
doNothing().when(abc).notifyDataSetChanged(); //do nothing getting exception here
mainactivity.recyclerView = recycleview;
mainactivity.PopulateRecyleView("", bitmap);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
有没有办法对这个方法进行单元测试,使 notifydatasetchanged() 不会给出 NPE(Null Pointer Exception)?我已经读过 power mockito 用于对最终方法进行单元测试,但它似乎不是最终方法的单元测试 notifyDataSetChanged。任何帮助将不胜感激。
【问题讨论】:
标签: android unit-testing mockito powermockito