Я пытаюсь запустить тесты 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()
}
}
Любая помощь будет принята с благодарностью.