Junit单元测试

Junit单元测试

什么是Junit

是Java语言编写第三方单元测试框架。

什么是单元测试

在Java中一个类就是一个单元。
单元测试是开发者编写的一小段代码用来测试某个类中的某个方法的功能或业务逻辑是否正确。

Junit的作用

可以帮助我们对类中的方法进行测试,最大限度避免出现bug,保证程序的稳定性和正确性。
可以让一个方法独立运行,这个方法测试方法

Junit的使用步骤

编写业务类(StudentDao):实现方法功能
编写测试类:命名规则:以Test开头,后面跟业务类名,比如:TestStudentDao
编写测试方法 

测试方法的要求
方法声明要求
        * 方法必须是public修饰,没有返回值,没有参数。
        * 方法声明上必须使用注解:@Test 
命名规则
        * 以test开发,以被测试的方法结尾,使用驼峰命名法
        * 比如:要测试save,则测试方法的名称:testSave

如何运行测试方法
选中方法名:右键 --> Run As --> Junit Test 执行选中的方法
选中类名:右键 --> Run As --> Junit Test 执行类中的所有测试方法
选中项目名:右键 --> Run As --> Junit Test 执行项目中的所有类中的所有测试方法

如何查看测试结果
    绿色:表示测试通过。
    红色:表现测试失败。

Junit常用注解

@Test:修饰测试方法
    * @Before:在每一个测试方法执行之前执行一次
    * @After:在每一个测试方法执行之后执行一次
    * @BeforeClass: 修饰静态方法,在所有测试方法执行之前执行一次。
    * @AfterClass: 修饰静态方法,在所有测试方法执行之后执行一次。

示例代码

    1. 设置一个类Calculator,包含4个方法:加、减、乘、除,使用JUnit对4个方法进行单元测试

    1. 在每个方法运行之前创建Calculator对象,在方法运行完毕以后将对象设置为null

/**
业务类
 */
public class Calcuate {  
    public int add(int a,int b){  
        return a+b;  
    }  
    public int subtract(int a,int b){  
        return a-b;  
    }  
    public int multiply(int a,int b){  
        return a*b;  
    }  
    public int divide(int a,int b){  
        return a/b;  
    }  
} 
public class CalcuateTest {
    Calcuate calcuate;
    @Before
    public void init() {
        if (calcuate == null) {
            calcuate = new Calcuate();
        }
    }
    @After
    public void close() {
        calcuate = null;
    }
    @Test
    public void testAdd() {
        int result = calcuate.add(2, 3);
        
        // 预测返回是true,如果不是true,则抛异常。
        /*
         断言:预先判断某个条件一定成立,如果不成立,则直接奔溃。
         messsage: 异常的提示信息
         expected:期望值
         actual:实际值
         */
        Assert.assertEquals("加法有问题", 5, result);
    }

    @Test
    public void testSubtract() {
        int result = calcuate.subtract(12, 2);
        // 故意设置减法期望值为10000
        Assert.assertEquals("减法有问题", 10000, result); 
    }

    @Test
    public void testMultiply() {
        int result = calcuate.multiply(2, 3);
        Assert.assertEquals("乘法有问题", 6, result);
    }

    @Test
    public void testDivide() {
        int result = calcuate.divide(6, 3);
        Assert.assertEquals("除法有问题", 2, result);
    }
}

assert类中的assert方法总结

1.assertTrue/False(String message,boolean condition);
判断一个条件是true还是false。

2.fail([String message,]);
失败,可以有消息,也可以没有消息。

3.assertEquals(String message,Object expected,Object actual);
判断是否相等,可以指定输出错误信息。
第一个参数是期望值,第二个参数是实际的值。
这个方法对各个变量有多种实现。

4.assertNotNull/Null(String message,Object obj);
判读一个对象是否非空(非空)

5.assertSame/NotSame(String message,Object expected,Object actual);
判断两个对象是否指向同一个对象。看内存地址。

7.failNotSame/failNotEquals(String message, Object expected, Object actual)
当不指向同一个内存地址或者不相等的时候,输出错误信息。
注意信息是必须的,而且这个输出是格式化过的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值