我在测试中使用了festAssertions,我注意到在测试休眠对象的测试中,使用assertThat(object).isEqualTo(otherObject)
与assertThat(object.equals(otherObject)).isTrue();
会产生不同的结果。
我不得不采取解决方法,现在测试看起来真的很丑,但是我不能使用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
最佳答案
事实证明,这不是festAssertions问题,因为在更改代码后,我无法重现该错误,并且.contains
方法效果很好。
我的更改与当前的会话概念有关,并且我可能有一些错误的代码。
如果碰巧遇到类似的问题,那么您应该在与休眠相关的代码和配置中寻找问题,而不是在festAssertions内部。