單元測試基礎
當今軟件測試十分盛行時,本人通過項目實踐和個人親身體會淺談單元測試,本人一直堅持
“
用代碼說話的原則
”
,同時也希望個人能給出寶貴意見,共同探討、共同進步,爲中國軟件事業有更大的發展共同奮鬥!
最早我們項目組開發的項目時,寫代碼都是從底層一直寫到表現層到
jsp
,然後開發人員在
web
層調試頁面,近乎
98
%都會報一大堆
exception,
然後再在代碼中加斷點一步一步查到底哪一層代碼出現問題
……,
比較好點做法就是在各個類中加上
main
方法測試,但總體很不理想,給
web
層開發人員的調試和質量控制人員帶來繁重的工作壓力;使用單元測試後,針對每一個方法都做嚴格的把關,大大減少調試的時間;同時質量控制人員返回過來的
bug
少了近
60
%,現在對於開發人員寫測試用例非常熟練,並且本人根據實際情況對測試用例做了點小小改動(這部分主要在後面代碼中詳述),帶來很好的效果!
單元測試到底給實際開發帶來什麼好處那?
(
1
)
(1)
首先對於開發人員來說大大減少調試工作的時間,同時也規範了對於代碼安全管理(我們知道那些方法是可以調用的);
(
2
)
(2)
對於整個項目來說,有了完整的測試,保證項目最後交付測試有了可靠依據;
(
3
)
(3)
對於測試人員大大減少
bug
的反饋;
(
4
)
(4)
對於項目經理整個項目達到很好的可控;
(
5
)
(5)
最主要的完整的單元測試給後期維護人員帶來很大的便捷!
單元測試好處可能還有很多,但本人只能理解和感悟這麼多
,
希望觀者補充!
單元測試配置:
我將使用
eclipse
+
myEclopse
給大家介紹關於
JUNIT
的環境的簡單配置;右鍵點擊項目選擇
“
屬性
”
,在彈出窗口中到環境變量中添加
junit.jar
包,這樣下一步我們就可以進行單元測試了;
使用
eclipse
快速開發
test Case
:
如下圖:右鍵選擇你要測試的類,在新建中點擊
“JUnit
測試用例
”
,
彈出對話框,配置測試名稱和根目錄,添加註釋等,再點擊
“
下一步
”
到下圖:
選擇你要測試類中的方法,點擊完成!便生成測試類的基本框架,如下代碼,我們以對一個
DAO
類測試爲例:
/*
* Copyright reserved 2005 by XXXXCo. Ltd. * Author : Fu wei Date : 2006-9-4 */ import junit.framework.TestCase; /** * @author Fu wei */ public class OrgTypeDAOTest extends TestCase { /** * @param arg0 */ public OrgTypeDAOTest(String arg0) { super (arg0); } /* * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { super .setUp(); } /* * @see junit.framework.TestCase#tearDown() */ protected void tearDown() throws Exception { super .tearDown(); } /** * 主函數 * @param args */ public static void main(String[] args) { TestRunner.run(OrgTypeDAOTest . class ); } /** * { @link OrgTypeDAO#getOrgTypeList()} 的測試方法。 */ public final void testGetOrgTypeList() { fail(" 尚未實現 "); // TODO } /** * { @link OrgTypeDAO#insertOrgTypeInfo(com.zhjy.mltx.vo.OrgTypeVO)} 的測試方法。 */ public final void testInsertOrgTypeInfo() { fail(" 尚未實現 "); // TODO } /** * { @link OrgTypeDAO#deleteOrgTypeInfo(java.lang.String)} 的測試方法。 */ public final void testDeleteOrgTypeInfo() { fail(" 尚未實現 "); // TODO } /** * { @link OrgTypeDAO#updateOrgTypeInfo(com.zhjy.mltx.vo.OrgTypeVO)} 的測試方法。 */ public final void testUpdateOrgTypeInfo() { fail(" 尚未實現 "); // TODO } /** * { @link OrgTypeDAO#getOrgTypeInfoById(java.lang.String)} 的測試方法。 */ public final void testGetOrgTypeInfoById() { fail(" 尚未實現 "); // TODO } /** * { @link OrgTypeDAO#isRepeatOrgTypeInfo(java.lang.String)} 的測試方法。 */ public final void testIsRepeatOrgTypeInfoString() { fail(" 尚未實現 "); // TODO } /** * { @link OrgTypeDAO#isRepeatOrgTypeInfo(com.zhjy.mltx.vo.OrgTypeVO)} 的測試方法。 */ public final void testIsRepeatOrgTypeInfoOrgTypeVO() { fail(" 尚未實現 "); // TODO } /** * { @link OrgTypeDAO#getFlatOrgIdByName(java.lang.String)} 的測試方法。 */ public final void testGetFlatOrgIdByName() { fail(" 尚未實現 "); // TODO } } JUnit
單元測試一共要注意一下幾點:
(
1
)
import junit.framework.TestCase
和
junit.textui.TestRunner
;
(
2
)繼承
junit.framework.TestCase
;
(
3
)自行添加一個
main
方法
中調用
TestRunner.run(
測試類名
.class);
(
4
)有一個調用
super(String)
的構造函數;
以上都是
JUnit
必有的特徵,除以上外,我們發現有許多以
test
開頭的方法,而這些方法正是我們要測試的方法,
Junti
測試其實採用的是斷言的方式,只要我們在所有
test
開頭中的方法對數據添加斷言方法,同時提供很多斷言的方法,
當我們寫完所有方法策略後,
JUnit
測試如下圖:
在方法頁面中點擊右鍵在
“
調試方式
”
或
“
運行方式
”
中點擊
“
JUnit
測試
”
,就運行測試類!
在執行測試類時,執行的大概過程
:
(
1
)先執行構造方法
public OrgTypeDAOTest(String arg0)
;
(
2
)再執行初始化數據方法
protected void setUp()
;
(
3
)再執行以
test
開頭的測試方法;
(
4
)最後執行
protected void tearDown()
方法清理對象;
如果測試失敗或者錯誤,將會顯示一個紅色的亮條;如果測試通過將顯示綠色亮條;如下圖
|
JUnit in java 真正的測試用例實戰
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.