[英]Robolectric not using test application
根據這個鏈接,我可以創建一個測試應用程序,Robolectric將自動開始在測試中使用。 我不能讓這個工作。
我正在使用Dagger進行依賴注入,並為Activity
和Application
創建了注入包裝類。 然后我的每個活動都擴展了包裝器活動類而不是普通的舊Activity
。
我遇到的問題是,在測試中, Application
模塊提供的依賴關系無法解析,因此測試失敗。 這是因為我們的大多數測試只是構建一個活動(使用Robolectric.buildActivity()
)而不是從Application
運行。
我希望以某種方式修改Robolectric testrunner以在Application
下運行我們的測試。 或者使用上面鏈接中概述的測試應用程序。
我已經創建了一個測試應用程序,但仍然遇到相同的測試錯誤,因為測試未在此測試應用程序下運行。 我已經嘗試將測試應用程序移動到不同的包等,但沒有任何改變。
我正在尋找一些關於如何去做我想要的建議。 對那些有Dagger經驗以及他們如何進行測試的人特別感興趣。
在Robolectric 3.0中它非常簡單,你可以直接將其添加到@Config
注釋中。
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21,application = TestApplication.class)
public class ActivityTest {
道歉,忘記了這一點。 為了解決這個問題,我在測試中創建了一個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文件中對其進行配置
application = <fully qualified name of the Application>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.