spring項目的單元測試編寫

1 單元測試

單元測試(Unit Testing),  即測試功能代碼的預期行爲和實際行爲的差異, 是一種白盒測試。 可以快速的測試自己的程序, 提高代碼質量; 也可以用來便捷地測試不熟悉的類庫的行爲, 熟悉類庫。

使用eclipse的junit插件可以快速的建立單元測試:

 
最簡單的例子:
  1. package athena.junit;
  2. import static org.junit.Assert.*;
  3. import org.junit.Test;
  4. public class UnitTest {
  5. @Test
  6. public void test() {
  7. String str = "abcde";
  8. String sub = str.substring(3, 5);
  9. assertEquals("de", sub);
  10. }
  11. }

@Test, 表示這是一段測試代碼, 將由junit調用。
assertEquals是junit提供的測試方法, 第一個參數是期望的值, 第二個參數是實際的值, 如果兩個參數不相等, 會拋出錯誤使測試失敗; assertEquals有多個重載方法。

詳細的單元測試知識可以參考:http://blog.csdn.net/zhangxin09/article/details/42418441

2 spring項目中的單元測試

好了, 該進入正題了,  我們的重點是在spring項目中進行單元測試。
spring的程序代碼需要spring環境如數據庫、 DI(依賴注入)環境纔可以正常運行, 所以要爲單元測試代碼加入執行環境註解, 讓單元測試在預期的環境中運行。

簡單的例子:
  1. package athena.section.service.impl;
  2. import static org.junit.Assert.*;
  3. import org.junit.Test;
  4. import org.junit.runner.RunWith;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.test.context.ContextConfiguration;
  7. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  8. import org.springframework.transaction.annotation.Transactional;
  9. @ContextConfiguration(locations = { "/spring-mvc.xml",
  10. "/spring-mybatis.xml","/spring-jms.xml", })
  11. @RunWith(SpringJUnit4ClassRunner.class)
  12. @Transactional
  13. public class DemoServiceImplTest {
  14. @Test
  15. public void testDbConnection() {
  16. //這樣單元測試代碼就可以做執行數據庫等操作了
  17. }
  18. }


使用@ContextConfiguration和@RunWith註解配置spring的測試環境, @Transactional表示這個單元測試對數據的增加修改都會被回滾, 不會真正的影響數據庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章