Я хочу выполнить ввод для EditText с visibility=gone
в начале.
У меня есть макет с видимым ProgressBar и пропущенный EditText.После некоторой фоновой операции я меняю видимые состояния обоих виджетов.ProgressBar скрывается и показывает EditText.
Поэтому, когда я запускаю этот тест:
class ExampleInstrumentedTest {
private var mIdlingResource: IdlingResource? = null
@Before
fun registerIdlingResource() {
val activityScenario = ActivityScenario.launch(MainActivity::class.java)
activityScenario.onActivity {
fun perform(activity: MainActivity) {
mIdlingResource = activity
// To prove that the test fails, omit this call:
IdlingRegistry.getInstance().register(mIdlingResource!!)
}
}
}
@Test fun listGoesOverTheFold() {
onView(withId(R.id.editText2)).perform(typeText("ABC"))
onView(withId(R.id.btnSubmit)).check(matches(isEnabled()))
}
@After
fun unregisterIdlingResource() {
if (mIdlingResource != null) {
IdlingRegistry.getInstance().unregister(mIdlingResource)
}
}
}
Сбой эспрессо, потому что:
Причина: java.lang.RuntimeException: Действие не будет выполнено, потому чтоцелевое представление не соответствует одному или нескольким из следующих ограничений: ((отображается на экране пользователю) и (поддерживает методы ввода или назначается из класса: class android.widget.SearchView))
Это моя активность:
private var mIdlingResource = CustomIdlingResource()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
progressBar.visibility = View.VISIBLE
mIdlingResource.setIdleState(false)
BillingFormRepositoryService().load(object : BillingFormRepository.BillingFormCallback {
override fun onSuccess(billingFormLoadedViewState: BillingFormLoadedViewState) {
progressBar.visibility = View.GONE
editText2.visibility = View.VISIBLE
mIdlingResource.setIdleState(true)
}
})
}