0

私は自分のテストで 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
4

1 に答える 1

1

これは festAssertions の問題ではないことが判明しました。これは、コードを変更した後、そのバグを再現できず、.containsメソッドがうまく機能するためです。

私の変更は現在のセッションの概念に関連しており、おそらくいくつかの悪いコードがありました。

同様の問題に直面した場合は、休止状態関連のコードと構成で問題を探す必要がありますが、festAssertions 内では問題を探す必要はありません。

于 2012-11-24T16:31:49.577 に答える