簡體   English   中英

Robolectric不使用測試應用程序

[英]Robolectric not using test application

根據這個鏈接,我可以創建一個測試應用程序,Robolectric將自動開始在測試中使用。 我不能讓這個工作。

我正在使用Dagger進行依賴注入,並為ActivityApplication創建了注入包裝類。 然后我的每個活動都擴展了包裝器活動類而不是普通的舊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>

http://robolectric.org/configuring/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM