我在单元测试中使用RoboGuice和AndroidMock框架时遇到问题.我已经创建了一个简单的项目来显示我的问题.在这里,我创建一个模拟实例并在RoboGuice中注册它.但是该过程在"setUp()"和"test01()"方法之间崩溃.正如我猜的那样,实际上当创建Injector时进程崩溃,如果任何模块内部有一个模拟实例.
如果我用实现接口的类的实例替换模拟的实例,那么一切正常.
有人知道如何解决这个问题吗?
这是我的测试代码:
public class testInjectMock extends RoboUnitTestCase<MyApplication> {
protected void setUp() throws Exception {
InterfaceToMock instance = AndroidMock.createNiceMock(InterfaceToMock.class); AndroidMock.expect(instance.SimpleMethod()).andStubReturn("Hello!");
MyModule myMockModule = new MyModule();
myMockModule.setMockedInstance(instance);//Comment this string to get into the test01() method
MyApplication.setMyModule(myMockModule);
super.setUp();
}
public void test01() {
//It never comes here
}
}
Run Code Online (Sandbox Code Playgroud)
模块源代码:
public class MyModule extends AbstractAndroidModule {
protected InterfaceToMock mockedInstance;
public void setMockedInstance(InterfaceToMock mockedInstance) {
this.mockedInstance = mockedInstance;
}
@Override
protected void configure() {
if(mockedInstance != null)
bind(InterfaceToMock.class).toInstance(mockedInstance);
}
}
Run Code Online (Sandbox Code Playgroud)
logcat输出:
05-23 …Run Code Online (Sandbox Code Playgroud)