Во время тестирования моего модуля я хочу в основном проверить, запускается ли действие простым нажатием кнопки, то есть в HorizontalListView
. Мне уже удавалось запускать новые действия во время предыдущего модульного теста, но этот не действует как требуется. У меня есть утверждение, подтверждающее, что активность, которую я хочу начать, по-прежнему равна нулю.Android JUnit HorizontalListView performItemClick() не работает
Фактически, когда я запускаю свой модульный тест, кажется, что он не выполняет щелчок. Я должен выполнить его сам во время теста, используя мой мизинец для прохождения теста.
Чтобы увидеть, был ли я щелкнул правой кнопкой мыши Вид, который я использовал в журналах, чтобы увидеть, какой вид моего теста был нажат, и который я на самом деле хочу щелкнуть: и, похоже, это правильный вид (правый идентификатор, правильная позиция и правый вид). Поэтому я думаю, что проблема не в том, где я нажимаю.
Активность, которую я тестирую, называется StudioActivity, и активность, которую я хочу запустить, называется AddBoasterActivity.
Мой блок Метод испытания:
public void testSwitchToAddBoaster(){
assertTrue(mBoasterPreviewFragment.getWithAddButton());
ActivityMonitor activityMonitor = getInstrumentation().addMonitor(AddBoasterActivity.class.getName(), null, false);
mStudioActivity.runOnUiThread(new Runnable() {
@Override
public void run(){
int lPosition = mBoasterPreviewFragment.getAdapter().getCount()-1;
View lView = mBoasterPreviewFragment.getBoaster().getChildAt(lPosition);
//HERE ARE LOGS TO SEE IF MY TEST IS PERFORMING
//THE CLICK ON THE RIGHT VIEW AT THE GOOD POSITION
Log.i("TEST POSITION:", ""+lPosition);
Log.i("TEST ID: ",""+lView.getId());
Log.i("TEST VIEW: ", ""+lView);
//AND IT'S THE GOOD VIEW!
mBoasterPreviewFragment.getBoaster().performItemClick(lView,lPosition,lView.getId());
}
});
AddBoasterActivity lAddBoasterActivity = (AddBoasterActivity) getInstrumentation().waitForMonitorWithTimeout(activityMonitor,5000);
assertNotNull(lAddBoasterActivity); //HERE IS THE FAILURE, THE ACTIVITY HASN'T BEEN STARTED
mWFBoasterPreviewFragment = new WeakReference<BoasterPreviewFragment>((BoasterPreviewFragment) lAddBoasterActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_preview));
mBoasterPreviewFragment = mWFBoasterPreviewFragment.get();
assertNotNull(mBoasterPreviewFragment);
lAddBoasterActivity.finish();
}
OnItemClickListener:
mBoaster.setAdapter(mAdapter);
if (withAddBoasterButton) {
mBoaster.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == mAdapter.getCount() - 1) {
//HERE IS THE CURRENT VIEW
Log.i("POSITION:", ""+position);
Log.i("ID: ",""+id);
Log.i("VIEW: ", ""+view);
Intent intent = new Intent(getActivity().getApplicationContext(), AddBoasterActivity.class);
intent.putExtra(AddBoasterActivity.EXTRA_BOASTER_SELECTED, mSelectedUsers);
intent.putExtra(AddBoasterActivity.EXTRA_IS_STREAM, isStream);
startActivityForResult(intent, AddBoasterActivity.REQUEST_CODE_ACTIVITY);
}
}});
}
Выполнение вручную щелчок довольно неудобно для тестов, которые должны быть автоматизированы. Поэтому, если кто-то знает, почему он так себя ведет.
Спасибо за помощь!