在会议室数据库上测试,可迭代包含“ Item”,但!item 0为“ Item”

时间:2019-11-30 12:49:54

标签: android testing

Goog下午,

如果列表中包含该项,当我放置新项时,我会通过数据库进行搜索以对特定的类Test进行测试。

@Test
public void insertAndDeleteTask() throws InterruptedException {


        Project projectTartampion = new Project(1L, "Projet Tartampion", 0xFFEADAD1);
        long projectID1L = projectDao.inserProject(projectTartampion);
        Task task1L = new Task(1,projectID1L,"Test",3);
        taskDao.insertTask(task1L);


    List<Project> allProjects = LiveDataTestUtil.getValue(projectDao.getAllProjects());
    assertNotNull(allProjects);
    assertFalse(allProjects.isEmpty());

    List<Task> allTasks = LiveDataTestUtil.getValue(taskDao.getAllTasks());
    assertNotNull(allTasks);
    assertFalse(allTasks.isEmpty());

    Log.i("TAG","***********************************"+LiveDataTestUtil.getValue(taskDao.getAllTasks()));

    assertThat(allTasks, contains(task1L));//HERE TO TEST IF allTasks contains task1L/////

日志测试错误结果:

iterable containing info Task{id=1, projectId=1, name='Test', creationTimestamp=3}
         but: item 0: was Task{id=1, projectId=1, name='Test', creationTimestamp=3}

但是我不完全了解发生了什么,因为当我使用Log.i来查看我的物品是否在列表中时,它就打开了。

感谢您的回答

2 个答案:

答案 0 :(得分:0)

确切的错误消息是:

Expected: iterable containing [<Task{id=1, projectId=1, name='Test', creationTimestamp=3}>]
     but: item 0: was <Task{id=1, projectId=1, name='Test', creationTimestamp=3}>

谢谢

答案 1 :(得分:0)

我发现了问题,我迷失了创建并转移到新的MutableLiveData,如下所示,

    MutableLiveData<List<Task>> listLiveData = new MutableLiveData<>();

    listLiveData.setValue(allTasks);
    assertEquals(listLiveData.getValue().get(0).getName(), task2L.getName());
    assertEquals(listLiveData.getValue().get(1).getName(), task1L.getName());

现在可以进行测试了。