java - 同一型号不等于

标签 java android junit junit4 junit5

我用 JUnitTest 覆盖我的应用程序来测试我的房间并作为文档

@Test
    public void writeCompanyAndReadInList() throws Exception {
        // Insert the company
        Company company = TestUtil.createCompany("MobOS2018");
        mCompanyDao.insertCompany(company);

        // Get the company
        LiveData<List<Company>> byName = mCompanyDao.getCompanies("MobOS2018 AND id =1");

        // Check if the two objects are equals
        assertEquals("Should be equal", byName.getValue().get(0), company);
    }

我的测试:

@Test
    public void writeUserAndReadInList() throws Exception {
    HistoryModel historyModel = TestUtil.createHistory(0,"21","3123",22-3-5L);
    mHistoryDao.save(historyModel);
    List<HistoryModel> byName = mHistoryDao.getAll();

    Log.e("-----------i", byName.get(0).getId()+" - "+historyModel.getId());
    Log.e("-----------d", byName.get(0).getDistance()+" - "+historyModel.getDistance());
    Log.e("-----------t", byName.get(0).getTime()+" - "+historyModel.getTime());
    Log.e("-----------c", byName.get(0).getCurrentTimeDate()+" - "+historyModel.getCurrentTimeDate());
    Log.e("-----------c", byName.get(0)+" - "+historyModel);
    Log.e("-----------eq", byName.get(0).toString().trim().equals(historyModel.toString().trim())+"");

    assertEquals(byName.get(0), historyModel);

日志是:

E/-----------i: 0 - 0
E/-----------d: 21 - 21
E/-----------t: 3123 - 3123
E/-----------c: 14 - 14
E/-----------c: com.fitnesstracker.model.HistoryModel@e803247 - com.fitnesstracker.model.HistoryModel@5d13a74
E/-----------eq: false

我已经记录了模型的所有字段,它们是相等的,但我不断收到它们不相等的错误(

java.lang.AssertionError: expected:<com.myApp.model.HistoryModel@e3b4c6e>
but was:<com.myApp.model.HistoryModel@b9d3f0f>

最佳答案

您需要覆盖hashCodeequals ,默认情况下 equals 基于内部对象 ID(相同的引用)。

存储和加载的对象不是同一个引用。它们是具有相同值的两个不同对象,但您尚未定义覆盖 equals,这应该被视为 equals 而不是基于引用检查。

关于java - 同一型号不等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60579612/

相关文章:

当预期和实际相同时 Java Junit 失败?

java - 如何将json转换为不换行的字符串和其他格式

java - Component.getGraphicsConfiguration 线程安全吗?

java - 排除特定目录并排除文件列表

android - 如何在没有 ViewPager 的情况下在水平 ScrollView 中获得分页功能

android - 在Android中按类型获取电话号码

android - 如何在 Camera2 API 中启用前置摄像头?

java - 使用 Mockito 创建新类的实例时如何模拟异常

java - 在 Leiningen (Clojure) for Android 中设置 JavaVersion sourceCompatibility(Java 1.7 vs 1.8)

java - JUnit 断言 null - 使用 stub 和模拟