測試分類白箱測試黑箱測試單元測試集成測試功能測試……白箱測試是指在知道被測試的軟件如何(How)完成功能和完成什麼樣(What)的功能的條件下所作的測試一般是由開發人員完成單元測試是一種白箱測試因為開發人員最了解自己編寫的軟件JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架回歸測試就是你不斷地對所編寫的代碼進行測試(如單元測試)編寫一些測試一些調試一些然後循環這一過程你會不斷地重復先前的測試哪怕你正編寫其他的類
第一步
去Junit主頁()下載最新版本程序包junitzip解開壓縮包到c\junit(可自定義)
第二步
假如目錄是c\junit那麼在classpath中加入c\junit\c\junit\junitjar定義類路徑在命令提示符下運行java junitswinguiTestRunner如果一切正確就會打開應用程序在下拉菜單中尋找程序自帶的例子比如junitsamplesAllTests點擊Run觀察結果
第三步
實現自己的TEST計劃目前有一個叫MyBean的數據庫操作類需要測試如下
package junitsamples;
import javasql*;
import javaio*;
public class MyBean{
Statement stmt=null;
ResultSet rs=null;
Connection conn=null;
String result=null;
public String con(){ //初始化數據庫
try{
ClassforName(orggjtmmmysqlDriver)newInstance();
String url =jdbc:mysql:///weboa?user=root&password=;
conn= DriverManagergetConnection(url);
return Connection Success!;
}
catch(Exception e){
Systemoutprintln(e);
return Connection Error!;
}
}
public String gogo(String lmdm){ //查詢數據庫
try{
stmt=conncreateStatement();
String sql=select * from TB_LM where N_LMDM=+lmdm+;
rs=stmtexecuteQuery(sql); //執行查詢
while (rsnext()){
result=rsgetString(N_SJID);
}
}
catch(Exception e){
result=etoString();
}
finally { //關閉JDBC資源
if(rs != null) try { rsclose(); } catch(SQLException ex)
{ exprintStackTrace(); }
if(conn != null) try { connclose(); } catch(SQLException ex)
{ exprintStackTrace(); }
}
return result;
}
}
接著創建一個測試類TestMyBean如下
package junitsamples;
import junitsamplesMyBean;
import junitframework*;
public class TestMyBean extends TestCase { //TestCase的子類
private MyBean aName; //構造被測類的對象
public TestMyBean(String name) {
super(name);
}
protected void setUp() { //進行初始化的任務
aName= new MyBean();
}
public static Test suite() { //進行測試
return new TestSuite(TestMyBeanclass);
}
public void testCon() { //對預期的值和con方法比較
AssertassertTrue(!aNameequals(null)); //斷言
AssertassertEquals(Connection Success!n());
}
public void testGogo() { //對預期的值和gogo方法比較
n();
AssertassertTrue(!aNameequals(null)); //斷言
AssertassertEquals(aNamegogo());
}
}
解釋如下
首先要引入待測試的類import junitsamplesMyBean接著引入Junit框架import junitframework*與一個Servlet類似需要繼承父類TestCase在setUp()方法中實例化一個MyBean供後面的測試方法使用suite()是一個很特殊的靜態方法它會使用反射動態的創建一個包含所有的testXxxx方法的測試套件確定有多少個測試可以執行testCon()方法對MyBean的Con方法進行測試並斷言(Assert)結果是Connection Success!並在AssertassertEquals()方法中驗證testGogo()方法和testCon()方法類似
第四步
把TestMyBeanMyBean類編譯成*class文件在Junit的控制台上選擇剛才定義的TestMyBean類並運行如果一切正確就會顯示綠條證明測試正確如果顯示紅色在Results中會有相應顯示根據提示檢查MyBean類中的錯誤一般的只要斷言符合MyBean類的規范TestMyBean類幾乎不可能出錯
一些擴展
對於WEB應用程序我們可以把Junit引入只需適當配置環境另外可以把眾多的測試類集成到一起形成總測試類並且只需要實現suite()方法例如
public static Test suite ( ) {
TestSuite suite= new TestSuite(All JUnit Tests);
suiteaddTest(VectorTestsuite());
suiteaddTest(TestMyBeansuite());
return suite;
}
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28386.html