Android 如何将模拟对象放入活动的onCreate()中?

Android 如何将模拟对象放入活动的onCreate()中?,android,automated-tests,Android,Automated Tests,我有一个使用对象的活动。为了进行测试,我想模拟这个对象,但我找不到如何使活动在onCreate()函数中使用模拟对象 我在测试中使用AndroidMock创建模拟对象和Robotium。例如: 应用程序(标准Android项目): 测试(标准Android测试项目): 我知道这两种方法 使用DI Conrainer。 继承要测试的类 活动 class DummyMainActivity extends MainActivity { Bundle b;

我有一个使用对象的活动。为了进行测试,我想模拟这个对象,但我找不到如何使活动在onCreate()函数中使用模拟对象

我在测试中使用AndroidMock创建模拟对象和Robotium。例如:

应用程序(标准Android项目):

测试(标准Android测试项目):

我知道这两种方法

  • 使用DI Conrainer。

  • 继承要测试的类

  • 活动

        class DummyMainActivity extends MainActivity {
            Bundle b;
            @Override
            void onCreate(Bundle b) {
                this.b = b;
            }
            void onCreateSuper() {
                super(b);
            }
        }
    
    试验

    class MainActivityTest扩展了ActivityUnitTestCase{
    @UsesMocks(MyObject.class)
    public void testMyObject(){
    //创建模拟对象
    MyObject o=AndroidMock.createMock(MyObject.class);
    DummyMainActivity活动=startActivity(new Intent(),null,null);
    activity.obj=o;
    activity.onCreateSuper();
    AndroidMock.验证(o);
    }
    }
    
    class MainActivityTest extends ... {
        @UsesMocks(MyObject.class)
        public void testMyObject() {
            // create the mock object
            MyObject o = AndroidMock.createMock(MyObject.class);
            AndroidMock.expect(o.doSomething()).andReturn(false);
            AndroidMock.replay(o);
    
            // Here some code which makes the activity use the mock object
            // and calls the onCreate() function on the activity.
    
            // Do some tests on the activity.
            Solo solo = new Solo(getInstrumentation(), getActivity());
            Assert.assertTrue(solo.searchText("It works!")); 
            AndroidMock.verify(o);
        }
    }
    
    @inject
    MyObject obj;
    
        class DummyMainActivity extends MainActivity {
            Bundle b;
            @Override
            void onCreate(Bundle b) {
                this.b = b;
            }
            void onCreateSuper() {
                super(b);
            }
        }
    
        class MainActivityTest extends ActivityUnitTestCase<DummyMainActivity> {
            @UsesMocks(MyObject.class)
            public void testMyObject() {
                 // create the mock object
                 MyObject o = AndroidMock.createMock(MyObject.class);
    
                DummyMainActivity activity = startActivity(new Intent(), null, null);
                activity.obj = o;
    
                activity.onCreateSuper();
                AndroidMock.verify(o);
            }
        }