Я учусь создавать сквозные тесты, поэтому я написал объект-компаньон следующим образом:
companion object {
lateinit var sDataManager: DataManager
@BeforeClass
@JvmStatic
fun classSetUp() {
sDataManager = DataManager.getInstance()
}
}
Тест выглядит следующим образом
@Test
fun createNewNote() {
val course = sDataManager.getCourse("java_lang")
val noteTitle = "Test note title"
val noteText = "This is the body of our test note"
onView(withId(R.id.fab)).perform(click())
onView(withId(R.id.spinner_courses)).perform(click())
onData(allOf(instanceOf(CourseInfo::class.java), equalTo(course))).perform(click())
onView(withId(R.id.spinner_courses)).check(matches(withSpinnerText(containsString(course.title))))
onView(withId(R.id.text_note_title)).perform(typeText(noteTitle))
.check(matches(withText(containsString(noteTitle))))
onView(withId(R.id.text_note_text)).perform(typeText(noteText), closeSoftKeyboard())
.check(matches(withText(containsString(noteText))))
val noteIndex = sDataManager.notes.size - 1
val note = sDataManager.notes[noteIndex]
assertEquals(noteTitle, note.title)
assertEquals(noteText, note.text)
assertEquals(course, note.course)
}
Все, кроме утверждений, работает, я знаю, что создается новая заметка, потому что размер в sDataManager.notes увеличивается. Если я отлаживаю тест при извлечении последней заметки val note = notes[noteIndex]
в разделе переменных, я вижу следующую ошибку note = {NoteInfo@12151} Method threw 'java.lang.NullPointerException' exception. Cannot evaluate com.example.jaime.notekeeper.mode.NoteInfo.toString()
. Действительно, свойства в note
равны нулю. Я не знаю, связана ли эта проблема с тем, что я делаю что-то не так в тесте или в DataManager.
Кстати, когда я запускаю приложение, все работает как положено, у меня также есть модульные тесты, чтобы проверить, создана ли заметка, все тесты проходят.