Hibernate を使用して DB にレコードを挿入するための DAO 呼び出しの単体テストを作成しています。
それはトランザクションであり、私はそのように @Transactional を使用しました:
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration(locations={"/spring-servlet.xml"})
@Transactional
public class MyDaoTest {
@Autowired
private MyDao dao;
@Test
@Rollback(false)
public void testAddEmployee() {
// Create some data (line 1)
dao.addPerson(newPerson); // (line 2)
// Query DB (line 3)
// Check result (line 4)
} // (line 5)
}
上記のコードでは、操作は関数が 5 行目で終了したときにのみコミットされます。
実際には、3 行目と 4 行目で、挿入が正常に完了したかどうかを確認するために DB にクエリを実行する必要があります。しかし、データがまだ永続化されていないため、それを行うことはできません。
このインサートをテストするにはどうすればよいですか? 関数の終了前にコミットする方法はありますか?
ここにさらに情報を追加しています。これはコンソール出力です:
Hibernate: select person0_.ID as ID1_, person0_.NAME as NAME1_ from PERSON person0_
Hibernate: insert into PERSON (NAME) values (?, ?)
Hibernate: select person0_.ID as ID1_, person0_.NAME as NAME1_ from PERSON person0_
テストのためにJUnitを使用しています