Android JUnit HorizontalListView performItemClick() not work



在我的单元测试期间,我想基本上测试一个活动是否由一个按钮上的简单压力启动,即在HorizontalListView中。在之前的单元测试中,我已经成功地启动了新的activity,但是这个activity并没有按照我想要的那样运行。我有一个断言失败告诉我,我想要启动的活动仍然是空的。

实际上,当我启动单元测试时,它似乎没有执行点击。我必须在测试过程中亲自执行,用我的小指来通过测试。

查看我是否点击了正确的视图,我使用日志来查看我的测试点击了哪个视图,我实际上想要点击哪个视图:它似乎是正确的视图(正确的Id,正确的位置和正确的视图)。所以我认为问题不在于我点击的地方。

我正在测试的活动被称为StudioActivity和我想要启动的活动被称为AddBoasterActivity。

My Unit test method:

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);
            }
        }});
    }

手动执行一个点击对于必须自动执行的测试来说是相当尴尬的。所以如果有人知道为什么它是这样的

谢谢你的帮助!

我终于找到了…只睡了一晚就没事了。我应该早点想到的,但是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();
}

相关内容

  • 没有找到相关文章

最新更新