一、什么是Junit?
Unit Testing单元测试,又称为模块测试,针对陈序进行验证性的测试工作,也就是测试数据的稳定性是否达到程序的预期。
二、黑盒测试与白盒测试是什么?
Junit属于白盒测试。
1.黑盒测试
在测试过程中,我们把程序看作为一个打不开的盒子,黑黑的什么也看不见,内部代码怎么写的也不知道,想程序传入参数(input),去查看程序输出(ouput)。这也是初期常用的测试方法。
特点:不需要我们中间参与编写任何代码,传入参数值后查看程序是否正常或达到预期值。
举例:
创建一个Calculator类,包含两个加减法。
public class Calculator {
/** * 加法 */
public int add(int num1, int num2) {
return num1 + num2;
}
/** * 减法 */
public int cut(int num1, int num2) {
return num1 - num2;
}
}
编写测试类:
public class Test {
public static void main(String[] args) {
Calculator calculator = new Calculator();
//测试加法
System.out.println(calculator.add(10, 10));//20 正确
//测试减法
System.out.println(calculator.cut(10, 10)); //0 正确
}
}
分析:
这是平时常用的测试方法,也就是黑盒测试。测试时,为了防止数据间的影响,一般会进行一次测试类运行,测试完。add()方法无误后,注释掉,进行.cut()方法测试。
缺点:
每次测试都需要注释掉上一步的测试代码,略显麻烦。
2.白盒测试(Junit)
如果是白盒测试,那么测试类应该这样:
public class CalculatorTest {
@Test
public void add() {
Calculator calculator = new Calculator():
System.out.println(calculator.add(10,10));
}
@Test
public void add() {
Calculator calculator = new Calculator():
System.out.println(calculator.add(10,10));
}
}
分析:
每一个需要测试的方法左边都有一个绿色的小三角,这是用来单元测试运行的。也就是说,我们可以只运行某一个方法去测试。
三、单元测试的编码规范
- 类名: 定义测试类,类名是由
被测试类名Test
构成。例如:CalculatorTest - 包名: 定义的测试类需要放在
xxx.xxx.xxx.test
包中。例如:package com.mylifes1110.test; - 方法名: 测试方法的方法名有两种定义方式
test测试方法
和测试方法
。例如:testAdd和add - 返回值: 因为我们的方法只是在类中测试,可以独立运行,所以不需要处理任何返回值,所以这里使用
void
。例如:public void add(); - 参数列表: 因为我们的方法是用来测试的,至于参数列表的传入是没有必要的。我们在测试的时候自行传入需要的参数测试即可。所以在此参数列表为
空
。例如:例如:public void add(); - @Test注解: 测试是需要运行来完成的。如果我们只有一个main方法,显然在结构上还是需要我们去注释掉测试过的。解决此问题这里我们需要在测试方法上方加
@Test
注解来完成测试,只要是加该注解的方法,可以单独运行此方法来完成测试。 - @Test注解jar包Junit4、5: @Test注解是需要我们导入jar包才能使用的。jar包有两个分别是:
junit-4.13-rc-2
和hamcrest-core-1.3
。这里我使用的是Junit4,单元测试还有Junit5,版本差异我没有做了解。主要是可以完成测试才是硬道理! - IDEA快捷导入Junit4、5: 使用IDEA的小伙伴,你们的福音来了。我们可以先创建测试类和方法,然后在测试方法上方加入
@Test
注解,此时IDEA显示的@Test注解是飘红的,这时候我们使用Alt + Enter
组合键来打开导入Junit单元测试列表,然后再选择Junit4或者Junit5确定即可导入成功!这时候再查看注解就没有飘红了!
四、Assert断言
简单地讲,断言就是对某种假设条件进行检查。
语法为:
Assert.assertEquals(预期值, 结果);
举例:
我们在上面的add的测试方面里面加入
Assert.assertEquals( expected: 1, result);
表示我预期程序结果是 1 ,如果结果相符,则运行后绿色通过,相悖则红色报错。这样的话,可以有效区分程序本身设计错误与测试运行的错误。
详细方法为:
断言方法 | 描述 |
---|---|
assertNull(java.lang.Object object) | 检查对象是否为空 |
assertNotNull(java.lang.Object object) | 检查对象是否不为空 |
assertEquals(long expected, long actual) | 检查long类型的值是否相等 |
assertEquals(double expected, double actual, double delta) | 检查指定精度的double值是否相等 |
assertFalse(boolean condition) | 检查条件是否为假 |
assertTrue(boolean condition) | 检查条件是否为真 |
assertSame(java.lang.Object expected, java.lang.Object actual) | 检查两个对象引用是否引用同一对象(即对象是否相等) |
assertNotSame(java.lang.Object unexpected, java.lang.Object actual) | 检查两个对象引用是否不引用统一对象(即对象不等) |
标签:10,Calculator,public,add,测试,Test,Junit From: https://www.cnblogs.com/hnzj-haoran212/p/17179990.html