Я следую учебнику Pluralsight «Приложения для Android с Kotlin: инструменты и тестирование» и столкнулся со следующей проблемой:
Во время инструментальных тестов мы проверяем текст в счетчике и двух текстовых полях ввидео это просто работает, но я сталкиваюсь с проблемами.Вот мой тестовый код:
import android.provider.ContactsContract
import android.support.test.runner.AndroidJUnit4
import org.junit.Assert.*
import org.junit.Test
import org.junit.runner.RunWith
import android.support.test.espresso.Espresso.*
import android.support.test.espresso.matcher.ViewMatchers.*
import android.support.test.espresso.action.ViewActions.*
import android.support.test.rule.ActivityTestRule
import org.hamcrest.Matchers.*
import org.junit.Rule
import android.support.test.espresso.assertion.ViewAssertions.matches
import android.support.test.espresso.matcher.ViewMatchers.withSpinnerText
import android.support.test.espresso.matcher.ViewMatchers.withText
@RunWith(AndroidJUnit4::class)
class NextThroughNotesTest {
@Rule @JvmField
val noteListActivity = ActivityTestRule(NoteListActivity::class.java)
@Test
fun nextThroughNotes() {
onData(allOf(instanceOf(NoteInfo::class.java), equalTo(DataManager.notes[0]))).perform(click())
for (index in 0..DataManager.notes.lastIndex) {
val note = DataManager.notes[index]
onView(withId(R.id.spinnerCourses)).check(
matches(withSpinnerText(note.course?.title)))
onView(withId(R.id.textNoteTitle)).check(
matches(withText(note.title)))
onView(withId(R.id.textNoteText)).check(
matches(withText(note.text)))
if (index != DataManager.notes.lastIndex) {
onView(allOf(withId(R.id.action_next), isEnabled())).perform()
}
}
onView(withId(R.id.action_next)).check(matches(isEnabled()))
}
}
Взглянув на сообщение об ошибке, я получаю следующее:
android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'with text: is "Android Programming with Intents"' doesn't match the selected view.
Expected: with text: is "Android Programming with Intents"
Got: "AppCompatSpinner{id=2131230878, res-name=spinnerCourses, visibility=VISIBLE, width=912, height=63, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, layout-params=android.support.constraint.ConstraintLayout$LayoutParams@1f42cb1, tag=null, root-is-layout-requested=false, has-input-connection=false, x=84.0, y=42.0, child-count=1}"
Сообщения об ошибках похожи, если я закомментирую строку о счетчике,Я попытался добавить 'containsString' согласно предыдущему решению StackOverflow, которое я нашел, но, очевидно, это не работает.Что я делаю не так?