androidTest assertEquals失败

时间:2019-01-08 01:37:26

标签: kotlin android-testing

我正在学习如何创建端到端测试,因此我按如下方式编写了伴随对象:

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中做错了。

顺便说一句,当我运行该应用程序时,所有的工作都按预期进行了,我还具有单元测试来检查注释是否已创建,所有测试都通过了。

0 个答案:

没有答案