簡體   English   中英

使用Junit測試Hibernate DAO

[英]Testing Hibernate DAO using Junit

我在我的項目中使用了Spring和Hibernate的組合,並且想要測試諸如SaveDelete方法之類的DAO方法。

daoFoundation是一個通過hibernateSession創建的包裝類。

@Override
public String createSubject(Subject subject) {
    String subjectId = (String) daoFoundation.save(subject);
    return subjectId;
}

這是我在SpringJunit4ClassRunner的JUnit Runs中編寫的內容
我在SetupMethod中創建了主題對象。

@Test
public void createSubjectTest(){
    subjectDao.createSubject(subject);
    assertNotNull(hassSubjectSelection.getId());
}

這是否足夠,還是我需要在我的測試類中另外編寫任何內容?

最簡單的方法是導入Spring應用程序上下文,在要測試的DAO中自動裝配,然后將測試方法或整個類標記為@Transactional 這將創建一個Hibernate會話,運行您的測試,然后自動回滾事務,這樣您就不會通過測試影響數據庫狀態。

看看如何在這里使用Spring運行單元測試。 您可以使用@ContextConfiguration批注讓Spring創建整個應用程序上下文。 因此,如果使用名為database-servlet.xml的XML文件創建database-servlet.xml則需要進行注釋

@ContextConfiguration(locations={"classpath:/database-servlet.xml"}) public class Test()

您可以使用注釋@RunWith(SpringJUnit4ClassRunner.class)將Spring TestContext Framework的功能與單元測試結合使用。 這允許您執行諸如聲明應該拋出的預期異常,運行定時測試,重復測試運行X次以及一堆其他很酷的東西。

基本上為了使這個工作,您的測試類應該類似於以下內容:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={YOUR APP CONTEXT FILES HERE AS A COMMA SEPARATED LIST})
public class Test(){
    @Autowired
    private YourDAO yourDAO;

    @Test
    @Transactional
    public void testSave(){
        //Test save method here. Any database changes made here will be
        //automatically rolled back when the test finishes.
    }

讓我知道這是否有效。

測試dao層的最佳方法是使用spring jdbctemplate將數據寫入數據庫,測試get和delete方法。 然后在@after中刪除你寫的記錄。 然后使用hibernate寫入數據庫並使用jdbctemplate讀取它們。 然后刪除您的測試行。 你正在做的就是測試hibernate的緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM