代码测试:
白盒测试:测试代码结构和逻辑(可见代码测试):黑盒测试:测试代码功能和性能(不可见代码测试)
白盒测试局限性: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);
}
}