单元测试和JUnit

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44002167/article/details/96027492

一,测试概念
在规定的条件下对程序进行操作,一发现程序错误,衡量软件的质量,并对其是否能满足设计要求进行评估的过程。

二,软件测试的分类
-单元VS集成测试

单元测试:是指对软件中的最小可测试单元进行检查和验证,通常是一个函数/方法。
单元测试是已知代码结构进行的测试,属于白盒测试。
集成测试:集成测试是指将多个单元相互作用,形成一个整体,对整体协调性进行测试
一般从构成系统的最小单元开始,持续推进到单元之间的接口直到集成为一个完成的软件系统为止。(先单元测试,在集成测试)

-白盒vs黑盒测试

白盒测试:全面了解程序内部逻辑结构,对所有的逻辑路径都进行测试。一般由程序员完成。
黑盒测试:又名功能测试。将程序视为一个不能打开的黑盒子。在完全不能打开的情况下,检查程序功能是否按照需求规格说明书的规格正常使用。一般由独立使用者完成。

-自动 vs手动测试

自动测试:用程序批量,反复测试程序,并可自动检查程序结果是否满足于东的要求。
手动测试:手动执行程序,手动收入所需要的参数,手动检查程序结果是否满足预定的要求。

-回归测试

修改旧代码后,重新进行测试以确定修改没有引入新的错误或导致其他代码产生错误。
回归测试在整个软件测测试过程中占有很大的比重。软件快速迭代开发的果儿好给你中,新版本的快速发布,使得回归测试更加频繁。
修改代码比重写代码更难。因为修改代码必须是在理解旧代码的基础之上,增加新的代码。新的代码必须和旧代码兼容,不能引入新的错误或导致其他代码的连锁错误。
回归测试和自动测试是紧密结合在一起的

三,测试策略

1,基于main函数的策略

优点:简单
缺点:1,无法自动判断被测对象的行为是否符合预期
2,main方法需要添加大量的代码,这些代码在发布的时候 也需要手动删除
3,分散程序员在开发时的关注点

2,居于自动化测试框架的策略

-初始化->输入测试数据执行被测代码->获取系统实际结果->比较结果是否一致->输出测试结论

四,Junit单元测试
Junit是一个Java语言的单元测试框架
单元测试框架比main函数测试策略更好,显示界面更直观,方便程序员提高测试效率。
官网:http://junit.org
每一个测试方法头部加@Test(注解),这样JUnit会自动执行这些测试代码。

  1. Junit_使用步骤:

    (1),定义一个测试类(测试用例)

    建议:
    	测试类名:被测试的类名Test
    	包名:xxx.xxx.xxx.test
    

    (2),定义测试方法:可以独立运行

    建议:
    	方法名;test测试的方法名
    	返回值:void
    	参数列表:空参
    

    (3),给方法加@Test
    (4),导入Junit依赖环境

  2. 判定结果:

    红色:失败
    绿色:成功
    一般使用断言操作来处理:
    例如;Assert.assertEquals(3,result);

  3. 两个注解:

(1)@Before
被修饰的方法会在被测试方法之前自动执行
(2)@After
被修饰的方法会在被测试方法之后自动执行

Example
(一)现有一 Calculator类

package indi.zxp.calculator;

public class Calculator {
    /**
     * 加法
     * @param a
     * @param b
     * @return
     */
    public int add(int a,int b){
        return a + b;
    }
    /**
     * 减法
     * @param a
     * @param b
     * @return
     */
    public int sub(int a,int b){
        return a - b;
    }
}

(二),定义一个测试类CalculatorTest

package indi.zxp.calculator;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class CalculatorTest {
    /**
     * 初始化方法
     * 用于资源申请,所有测试方法在执行之前都会先执行该方法
     */
    @Before
    public void init(){
        System.out.println("init");
    }
    /**
     * 释放资源方法:
     * 在所有测试方法执行完后,都会自动执行该方法
     *
     */
    @After
    public void close(){
        System.out.println("close");
    }
    /**
     * 测试add方法
     */
    @Test
    public void testAdd(){
        //1创建计算器对象
        Calculator c = new Calculator();
        //2,调用add方法
        int result = c.add(1,2);
        //一般不会在Junit单元测试中输出
        //System.out.println(result);
        //3.断言,我断定这个结果为3
        Assert.assertEquals(3,result);
    }
}

其他:
-本篇文章仅作学习使用,侵删
-参考视频:https://www.icourse163.org/learn/ECNU-1003718005?tid=1206270202#/learn/content?type=detail&id=1210890309&sm=1

猜你喜欢

转载自blog.csdn.net/qq_44002167/article/details/96027492
今日推荐