![](/img/trans.png)
[英]Testing steps of DAO layer and Service layer of Spring MVC and Hibernate using Junit
[英]Testing Hibernate DAO using Junit
我在我的項目中使用了Spring和Hibernate的組合,並且想要測試諸如Save
和Delete
方法之類的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.