android对ActivityResult的测试

android对ActivityResult的测试,android,testing,Android,Testing,我正在寻找一个解决方案,以获取我的测试(实际上是一个ActivityInstrumentationTextCase2),使用特殊(模拟)请求-/resultcode和intent测试我的活动的onActivityResults方法 代码: 应测试方法: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode)

我正在寻找一个解决方案,以获取我的测试(实际上是一个ActivityInstrumentationTextCase2),使用特殊(模拟)请求-/resultcode和intent测试我的活动的onActivityResults方法

代码: 应测试方法:

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        //In this case the user selected an image from his harddrive
        case StartupActivity.PICK_IMAGE:
            if (resultCode == Activity.RESULT_OK) {
                this.processSelectedFile(data.getData());
            }
            break;
        }
    }
测试等级:

public void testOnActivityResult() {
        //here I would like to call the onActivityResult method from my mActivity object.
    }

要测试受保护的成员,请声明(在测试项目中)从目标派生的新类:

public class TestMyActivity : MyActivity
{

  //constructors

   public void testOnActivityResult(int requestCode, int resultCode, Intent data) { 
       //call super one
       super.onActivityResult(requestCode, resultCode, data);
   }

}
现在在测试中,创建其中一个,然后可以调用该方法

想法来源:


您是否尝试过设置活动对象,然后只调用onActivityResult?嘿,谢谢您的回答-onActivityResult是一个受保护的方法,因此在测试类中不可见…您是否在问应该在“testOnActivityResult()”方法中编写什么代码?或者,您是否在询问“onActivityResult”方法是否符合您的要求,或者如何验证数据是否已被处理?我可以想象@weston建议设置并调用该方法,这将是测试它是否正在做您希望它做的事情的最快方法。或者,您希望实现更多的自动化测试(Junit等)?这似乎是一个很好的解决方案,我可以接受。。。愚蠢的是,我没有想到谷歌如何测试一个受保护的方法!可能是因为我从错误的角度看待这个问题。我现在就去看看。谢谢!!