我有一个使用对象的 Activity 。为了进行测试,我想模拟这个对象,但我找不到如何让 Activity 在 onCreate() 函数中使用模拟对象。
我正在使用 AndroidMock 在测试中创建模拟对象和 Robotium。例如:
应用程序(标准 Android 项目):
class MainActivity extends ... {
MyObject obj;
MainActivity() {
obj = new MyObject();
}
void onCreate(Bundle b) {
obj.doSomething();
...
}
}
测试(标准 Android 测试项目):
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);
}
}
最佳答案
我知道这两种方式。
使用 DI Conrainer。 Robojuice
@inject MyObject obj;
继承被测类
Activity
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);
}
}
关于android - 如何将模拟对象放入 Activity 的 onCreate() 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12708048/