1

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を使用しています

4

1 に答える 1

1

挿入をテストするには、次のアサーションを使用できます。

Assert.assertNotNull(dao.findById(newPerson.getId()));

削除チェックについては、次のテストを試すことができます。

@Test
public void testDelete(){
    ...
    dao.removePerson(person);
    Assert.assertNull(dao.findById(person.getId()));
}
于 2013-07-14T10:02:45.953 に答える