Robolectric不使用testing应用程序

根据这个链接,我可以创build一个testing应用程序,Robolectric将在testing中自动开始使用。 我无法得到这个工作。

我使用Dagger进行dependency injection,并为ActivityApplication创build了注入包装类。 然后,我的每个活动都扩展了包装活动类,而不是普通的旧Activity

我遇到的问题是,在testing中, Application模块提供的依赖关系无法parsing,因此testing失败。 这是因为我们大多数的testing只是build立一个活动(使用Robolectric.buildActivity() ),而不是从Application运行。

我希望以某种方式修改Robolectric testrunner以在Application下运行我们的testing。 要么就是按照上面的链接所述使用testing应用程序。

我创build了一个testing应用程序,并且仍然得到相同的testing错误,因为这个testing应用程序没有运行testing。 我试着将testing应用程序移动到不同的软件包等,但没有改变。

我正在寻找一些关于如何去做我想做的事的build议。 会对那些有Dagger经验的人以及他们如何进行testing特别感兴趣。

Related of "Robolectric不使用testing应用程序"

在Robolectric 3.0中它非常简单,直接将它添加到@Config注解中。

@RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21,application = TestApplication.class) public class ActivityTest {

道歉,忘了这个。 为了解决这个问题,我创build了一个驻留在testing端的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(); } } ... } 

你可以在文件org.robolectric.Config.properties中configuration它

 application = <fully qualified name of the Application> 

http://robolectric.org/configuring/