我在我的测试中使用festAssertions,并且我注意到在测试hibernate对象的测试中,使用assertThat(object).isEqualTo(otherObject)
的结果与assertThat(object.equals(otherObject)).isTrue();
的结果不同。为什么assertThat()。isEqualTo与Hibernate的等价结果会产生不同的结果?
我不得不做的解决方法,现在测试看起来真的很难看,但我不能使用 assertThat(collection).contains(object1, object2)
,因为这只是不工作!
这里是部分代码(看最后一行): seasonRate,seasonRate1被创建和保存。然后从数据库中检索并检查原件。没有什么奇特的,但不适用于festAssertions。
你有任何想法如何解决这个问题,如果它是我的一方或一些错误?
(...)
session.save(seasonRate);
session.save(seasonRate2);
session.getTransaction().commit();
session.close();
session = sessionFactory.getCurrentSession();
session.beginTransaction();
RateRepositoryHibernate rateRepositoryHibernate= new RateRepositoryHibernate(new StubHibernateSessionFactory(sessionFactory));
// when
final Collection<Rate> allRatesForRoom = rateRepositoryHibernate.getAllRatesForRoom(room);
// then
assertThat(allRatesForRoom.size()).isEqualTo(EXPECTED_RATES);
for(Rate rate : allRatesForRoom)
{
if(rate.getRateName().equals("season name 2"))
{
assertThat(rate.equals(seasonRate2)).isTrue();
}
if(rate.getRateName().equals("season name"))
{
assertThat(rate.equals(seasonRate)).isTrue();
}
}
//assertThat(allRatesForRoom).contains(seasonRate, seasonRate2); // this does not work somehow