Robolectric不使用测试应用程序

9 android robolectric dagger

根据这个链接,我可以创建一个测试应用程序,Robolectric将自动开始在测试中使用.我不能让这个工作.

我使用Dagger进行依赖注入,并为Activity和创建了注入包装类Application.然后我的每个活动都扩展了包装器活动类而不是普通的老类Activity.

我遇到的问题是,在测试中,Application模块提供的依赖关系无法解析,因此测试失败.这是因为我们的大多数测试只是构建一个活动(使用Robolectric.buildActivity())而不是从一个Application.

我希望以某种方式修改Robolectric testrunner来运行我们的测试Application.或者使用上面链接中概述的测试应用程序.

我已经创建了一个测试应用程序,但仍然遇到相同的测试错误,因为测试未在此测试应用程序下运行.我已经尝试将测试应用程序移动到不同的包等,但没有任何改变.

我正在寻找一些关于如何去做我想要的建议.对那些有Dagger经验以及他们如何进行测试的人特别感兴趣.

Ern*_*son 14

在Robolectric 3.0中它非常简单,您可以直接将其添加到@Config注释中.

@Config


小智 5

道歉,忘记了这一点.为了解决这个问题,我创建了一个TestApplication与测试同时存在的方法.然后我修改了我们TestRunner(扩展了RobolectricTestRunner):

public class TestRunner extends RobolectricTestRunner {

    public TestRunner(final Class<?> testClass) throws InitializationError {
        super(testClass);
    }

    ...

    @Override
    protected Class<? extends TestLifecycle> getTestLifecycleClass() {
        return MyTestLifecycle.class;
    }

    public static class MyTestLifecycle extends DefaultTestLifecycle {
        @Override
        public Application createApplication(final Method method, final AndroidManifest appManifest) {
            // run tests under our TestApplication
            return new TestApplication();
        }
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以在文件 org.robolectric.Config.properties 中配置它

application = <fully qualified name of the Application>
Run Code Online (Sandbox Code Playgroud)

http://robolectric.org/configuring/