单元测试unit test及相关框架

单元测试UT

单元:可独立测试的基本元素,在逻辑上是独立的部分,比如,一个或者多个函数,一个或多个类,jar/dll/ocx的组件,功能模块。

单元测试:
测试单元功能+单元接口和边界条件+单元局部数据结构+单元各类错误处理路径

单元测试模型,单元测试通过构造隔离的测试环境实现测试,这个封闭的环境主要是模拟被测单元的调用和所依赖的方法,即驱动程序和桩程序:

  • 驱动程序,负责给被测单元输入数据,并接受被测单元的返回值;
  • 桩程序,模拟被测单元的从属模块,模拟被被测单元调用,给被测单元返回值;

TDD:测试驱动开发,现根据需求写好测试程序,再以满足测试程序需求为目标,编写业务逻辑实现代码。

一个正式的编写好的单元测试用例的特点是:已知输入和预期输出,每一项需求都至少需要两个单元测试用例:正验证和负验证。

每个单元测试可以都可以包含自己的Main函数,运行单元测试时使用即可,整个项目的正式入口类指定即可。

Junit测试框架

特性:

  • 测试工具,一整套固定的工具,保证每次测试时初始化的环境(基准环境)都是相同的,因此,必须包括setUp()方法和tearDown()方法。setUp用来初始化资源、数值什么的,tearDown用来释放资源。
import junit.framework.TestCase;

public class TestToolsExample extends TestCase { //继承于一个抽象类
    public static void main(String[] arg){
        TestToolsExample testToolsExample=new TestToolsExample();
        try{
            testToolsExample.setUp();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            testToolsExample.testAdd();//最基础的调用测试方法,不过一般使用TestRunner进行调用
        }
    }

    //测试工具示例
    protected int value1, value2;

    @Override
    protected void setUp() throws Exception {  //初始化测试环境
        super.setUp();
        value1 = 3;
        value2 = 3;
    }

    public void testAdd() { //不是一个main函数,为什么idea可以将其识别为可运行的方法
        int result=value1+value2;
        assertTrue(result==6); //一种断言用法

    }
}
  • 测试套件,捆绑几个测试案例同时运行,@RunWith和@Suite都被用过运行测试套件,例子如下:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

//Junit Suite Test
@RunWith(Suite.class)
@Suite.SuiteClasses({JunitToTest1.class, JunitToTest2.class})  //注解
public class JunitSuiteTest {
	//Do nothing,这个类的作用主要就是两个测试联合一起测试
}

//第二个java文件
import org.junit.Assert;
import org.junit.Test;

public class JunitToTest1 {//本类的目的是测试MessageUtil中的printMessage方法
    String message = "Robert";
    MessageUtil messageUtil = new MessageUtil(message);

    @Test
    public void test_MessageUtil_printMessage() {
        Assert.assertEquals(message,messageUtil.printMessage());//通过断言判断,实际输出是否和理想值相同
    }
}

//第三个java文件
import org.junit.Assert;
import org.junit.Test;

public class JunitToTest2 {//目的,测试MessageUtil的sayHello方法
    String message="Robert";
    MessageUtil messageUtil=new MessageUtil(message);
    String exceptedMessage="Hi!"+message;
    @Test
    public void test_MeassageUtil_sayHello(){
        Assert.assertEquals(excepted
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值