2013-05-21 3 views
1

Во время тестирования моего модуля я хочу в основном проверить, запускается ли действие простым нажатием кнопки, то есть в 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); 
      } 
     }}); 
    } 

Выполнение вручную щелчок довольно неудобно для тестов, которые должны быть автоматизированы. Поэтому, если кто-то знает, почему он так себя ведет.

Спасибо за помощь!

ответ

0

Ну, наконец, я нашел ... просто ночь, чтобы спать, и все было в порядке. Я должен был подумать об этом раньше, но Robotium уже помог мне несколько раз назад.

Проверьте это, если вы не проверить его еще: https://code.google.com/p/robotium/

Так вот как это выглядит с Robotium:

public void testSwitchToAddBoaster(){ 
    Solo solo = new Solo(getInstrumentation(), getActivity()); 
    getInstrumentation().waitForIdleSync(); 
    ActivityMonitor activityMonitor = getInstrumentation().addMonitor(AddBoasterActivity.class.getName(), null, false); 
    assertTrue(mBoasterPreviewFragment.getWithAddButton()); 

    int lPosition = mBoasterPreviewFragment.getAdapter().getCount()-1; 
    View lView = mBoasterPreviewFragment.getBoaster().getChildAt(lPosition); 

    solo.clickOnView(lView); //SIMPLE CLICK 

    AddBoasterActivity lAddBoasterActivity = (AddBoasterActivity) getInstrumentation().waitForMonitorWithTimeout(activityMonitor,5000);   
    assertNotNull(lAddBoasterActivity); //NOW THE ACTIVITY IS STARTED 

    mWFBoasterPreviewFragment = new WeakReference<BoasterPreviewFragment>((BoasterPreviewFragment) lAddBoasterActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_preview)); 
    mBoasterPreviewFragment = mWFBoasterPreviewFragment.get();  
    assertNotNull(mBoasterPreviewFragment); 

    lAddBoasterActivity.finish(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^