來學習一下軟件測試相關的方法,了解一下黑盒測試和白盒測試,以及后面要用到的JUnit單元測試。JUnit單元測試也屬于白盒測試,這次內容較少且相對簡單。
一、軟件測試方法
1、黑盒測試
不需要寫代碼,給輸入值,看程序是否能夠輸出期望的值。“黑盒”兩字非常形象,簡單理解,往黑盒子里面丟一堆測試數據,看看能否出來對應的值。
2、白盒測試
需要寫代碼,關注程序具體的執行流程。“白盒”兩字也非常形象,因為“白盒”即透明可見的,所以就需要事先編寫程序,關注具體的執行流程。
3、JUnit單元測試
3.1 單元測試
針對最小的功能單元編寫測試代碼。Java程序最小的功能單元是方法,因此可以理解為對單個Java方法的測試。
測試驅動開發(TDD):編寫接口---->編寫測試---->編寫實現---->運行測試
3.2 JUnit單元測試步驟
1.定義一個測試類(測試用例)
- 測試類名:被測試的類名Test,如CalculatorTest
- 包名:xxx.xxx.xx.test,如cn.itweb.test
2.定義測試方法:可以獨立運行
- 方法名:test測試的方法名,如testAdd()
- 返回值:void
- 參數列表:空參
3.給方法加@Test
4.導入junit依賴環境
3.3 判斷結果
紅色:失敗
綠色:成功通常使用斷言操作處理結果
- Assert.assertEquals(期望的結果,運算的結果)
3.4 補充(兩個注解)
@Before
- 修飾的方法會在測試方法之前被自動執行(一般用于資源申請)
@After
- 修飾的方法會在測試方法之后被自動執行(一般用于資源釋放)
3.5 示例
1)定義一個包含加減法的計算器的類
package com.itweb.junit;public class Calculator { //定義一個計算器類public int add(int a,int b){ //定義加法//int i=3/0; 報除0異常,出現紅色報錯return a+b;}public int sub(int a,int b){ //定義減法return a-b;}
}
2)對比
假如按以前的方法創建測試類,當要測試的方法較多時比較麻煩(實際開發中基本不用)
package com.itweb.junit;
// 按以前創建測試類的方法,當要測試的方法較多時比較麻煩
public class CalculatorTest {public static void main(String[] args) {Calculator c=new Calculator(); // 創建對象int result= c.add(1,2); // 調用int result1=c.sub(1,2);System.out.println(result);System.out.println(result1);}
}
運行結果
3
-1
使用JUnit單元測試(在開發中常用)
package com.itweb.junit;import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;public class CalculatorTest {/*** 初始化方法:* 用于資源申請,所有測試方法在執行之前都會先執行該方法*/@Beforepublic void init(){System.out.println("init...");}/*** 釋放資源方法:* 在所有測試方法執行完后,都會自動執行該方法*/@Afterpublic void close(){System.out.println("close...");}// 以下為對Calculator類中兩個方法的測試@Testpublic void testAdd(){ // 測試add方法//System.out.println("我被執行了");System.out.println("testAdd...");Calculator c=new Calculator(); // 創建計算器對象int result=c.add(1,2); // 調用add方法//System.out.println(result);// 斷言,斷言結果為3,和實際輸出值比較,若不相等則爆紅Assert.assertEquals(3,result); // 斷言成功//Assert.assertEquals(2,result); 斷言失敗,爆紅}@Testpublic void testSub(){ // 測試sub方法Calculator c=new Calculator();int result=c.sub(1,2);Assert.assertEquals(-1,result); // 斷言成功}
}
運行結果(右鍵運行testAdd)
init...
testAdd...
close...
程序的運行截圖及相關說明
可能會遇到的問題及說明
a、包名按com.itweb.junit命名后按anter不顯示層級結構
點擊小齒輪,因為我的可以正常顯示,按我的這樣設置就行,如下圖
b、首次添加注解報紅
按提示(Alt+Enter–>Import class)導入對應的包和依賴即可,如junit包和包下對應用到的類