Различные модули кинжала в тесте эспрессо - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь запустить тесты Espresso, один набор с использованием нашего тестового бэкэнда, а другой с ложными ответами. На данный момент у меня есть пользовательский тестовый бегун и приложение с сетевым модулем, которое запускает фиктивный сервер.

Моя цель - иметь возможность каким-либо образом передать параметр из моего тестового класса или аннотировать свой тестовый класс и в зависимости от этот флаг использует имитацию бэкэнда или живую.

class UITestApplication : CustomApplication() {
    override val injectorComponent: AndroidInjector<CustomApplication> by lazy {
        DaggerUITestAppComponent
                .builder()
                .application(this)
                .build()
    }

    override fun initWorkManager() {
        try {
            super.initWorkManager()
        } catch (e: IllegalStateException) {
            //ignore WorkManager is already initialized
        }
    }
}
@Module
object UITestLibModule {

    private var mockServer: MockWebServer? = null
    var useMockBackend: Boolean = false
    var cleverDispatcher: CleverDispatcher? = null

    @Singleton
    @Provides
    fun providesAPIEndpoint(context: Context): Endpoints {
        return if (useMockBackend) {
            mockServer = MockWebServer()
            startServer(context, mockServer!!)

            val url = "http://localhost:6715/"
            Endpoints(name = "Mocked",
                           coreApi = url,
                           predictionApi = url)
        } else {
            testing()
        }
    }

    private fun startServer(context: Context, server: MockWebServer) {
        Thread(Runnable {
            cleverDispatcher = CleverDispatcher(context)
            server.dispatcher = cleverDispatcher!!
            server.start(6715)
        }).start()
    }

}

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...