Моя цель - запустить набор тестов пользовательского интерфейса Espresso и настроить экземпляр Retrofit, созданный в методе onCreate
моей функции MainActivity, на возвращение ложных ответов JSON из localhost
, поэтому я могу проверить, какПользовательский интерфейс приложения реагирует на коды ответов и другие данные JSON и т. д.
До сих пор я пытался добавить пакет MockWebServer
и смог запустить его на сервере localhost.Однако экземпляр Retrofit все еще был настроен для производственного URL.
Я пытался передать аргументы при запуске теста, включая ручную настройку намерения для MainActivity с некоторыми extras
, в попытке установить флаг, который мог бы переключать строку, используемую для экземпляра Retrofit,Однако, похоже, что любые аргументы, установленные в @Before
теста, не обнаруживаются при запуске MainActivity.
Я посмотрел на эти ответы, но, похоже, решения не существует:
Тест пользовательского интерфейса Android Espresso с использованием модифицированного API Retrofit
Запрошенный сервер запрашивает тестирование пользовательского интерфейса Android Espresso
Это мой последний эксперимент:
@get:Rule
var activityRule = ActivityTestRule(MainActivity::class.java, true, false)
@Before
fun setup() {
}
@Test
fun intent() {
val intent = Intent()
activityRule.launchActivity(intent.putExtra("UITesting", true))
println(activityRule.activity.intent.extras)
}
Вот экземпляр Retrofit:
var BASE_URL = "https://api.invoicehome.com"
class NetworkManager {
private val service : networkService
// initialization with BASE_URL, using Gson converter factory to decode ( i believe there are other options available as well)
init {
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
service = retrofit.create(networkService::class.java)
// }
}
}
Начало MainActivity, где есть экземпляр NetworkManager
:
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
private var networkManager = NetworkManager()
}
. Я хотел бы что-то, что можно просто обернуть вокруг экземпляра Retrofit и вставить в URL, но я уверен на 99%это не реально.Если какие-то быстрые разработчики смотрят на это, я ищу аналогичную функциональность для Swifter
.
Итак, могу ли я как-то сделать URL-адрес условным для экземпляра Retrofit?Где бы я пропустил эти флаги?Я скучаю по библиотеке, которая может сделать все это для меня?