代碼測試:
白盒測試:測試代碼結構和邏輯(可見代碼測試):黑盒測試:測試代碼功能和性能(不可見代碼測試)
白盒測試侷限性:1、不可能測試所有代碼。2 白盒測試難度比極高。
單體測試是一種白盒測試,測試代碼功能模塊 – 測試代碼單個功能
junit 是java 的單體測試技術
1、編寫junit 在工程引用junit 類庫
2、編寫單體測試用例
* 創建public void 無參數的方法 、在方法前添加@Test 註解
3、每個測試方法 相當於以前編寫main 函數,每個測試方法可以單獨執行
在使用junit進行測試當方法非常多,每個方法輸出內容到控制檯,人們無法通過人工進行檢查
* 自動化結果檢查 — 斷言 Assert
斷言原理:調用方法,調用方法前,準備測試數據、測試數據運行結果 —— 比較實際結果與預期結果是否相同
- 編寫單體測試時,不要僅測試正確的數據和結果,測試不正確數據(非法數據)
代碼:
package com.qddx;
/*
* 編寫加減乘數方法
* */
public class Calcultor {
public int add(int a, int b) {
return a + b;
}
public int sub(int a, int b) {
return a - b;
}
public int mul(int a, int b) {
return a * b;
}
public int div(int a, int b) {
if (b == 0) {
throw new RuntimeException("除數爲零");
}
return a / b;
}
}
測試代碼:
package com.qddx;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
//@ignore 可以忽略不想執行的方法。
public class CalcultorTest {
// 在每個測試方法前執行的代碼
@Before
public void before() {
System.out.println("before...");
}
// 在每個測試代碼後執行的代碼
@After
public void after() {
System.out.println("after");
}
// 在整個測試類實例化之前只想一段代碼
@BeforeClass
public static void befrClass() {
System.out.println("before....");
}
// 在整個類對象使用之後
@AfterClass
public static void afterClass() {
System.out.println("afterclass");
}
@Test
public void testAdd() {
// 方法進行測試
int a = 6;
int b = 9;
Calcultor c = new Calcultor();
int result = c.add(a, b);
System.out.println(result);
// 比較實際結果和語氣結果的值
Assert.assertEquals(15, result);
}
@Test
public void testSub() {
int a = 6;
int b = 9;
Calcultor c = new Calcultor();
int result = c.sub(a, b);
System.out.println(result);
// 比較實際結果和預期結果的值 使用斷言
Assert.assertEquals(-3, result);
}
@Test
public void testMul() {
int a = 6;
int b = 9;
Calcultor c = new Calcultor();
int result = c.mul(a, b);
System.out.println(result);
// 比較實際結果和語氣結果的值
Assert.assertEquals(54, result);
}
@Test
public void testDiv() {
int a = 6;
int b = 2;
Calcultor c = new Calcultor();
int result = c.div(a, b);
System.out.println(result);
// 比較實際結果和語氣結果的值
Assert.assertEquals(3, result);
}
}