相关疑难解决方法(0)

如果在任何模块中存在模拟实例,则在创建RoboGuice注入器期间进程崩溃

我在单元测试中使用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)

java eclipse android roboguice

85
推荐指数
1
解决办法
2367
查看次数

标签 统计

android ×1

eclipse ×1

java ×1

roboguice ×1