单元测试

    单元测试

u  什么是单元测试

写了个类,要给别人用,会不会有bug?怎么办?测试一下。

用main方法测试好不好?不好!

1.不能一起运行!

2.大多数情况下需要人为的观察输出确定是否正确

u  单元测试的介绍

Ø  执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

Ø  工厂在组装一台电视机之前,会对每个元件都进行测试,这,就是单元测试

Ø  进行充分的单元测试,是提高软件质量,降低开发成本的必由之路

Ø  对于程序员来说,如果养成了对自己写的代码进行单元测试的习惯,不但可以写出高质量的代码,而且还能提高编程水平

u    Junit

1.JUnit是一种测试代码的框架,测试的目的是:保证代码没错,而不是保证代码正确。

2.测试类一般不要和目标类放在一起,但编译成的class文件是放在一起的。

3.单元测试主要是来测试程序的结果和自己期望的值是否相等

创建测试类的步骤:

1)在工程下面创建一个名为test 的 Source Folder ,这个源程序文件夹和 src文件夹的阶级是相等的

2)测试类和目标类的包名要相同,这样的好处是测试类就不要import导入目标类的源码

3)测试类的命名规则:假设目标类的名字是 Calculator,则创建的测试类应命名为 CalculatorTest 或者 TestCalculator

error 程序本身出错 比如 将除数设置为0 ,

failures 测试失败

 

@Test :定义一个测试方法的标志

@Test(timeout=1000) :设置超时时间,如果测试时间超过了你定义的timeout,测试失败

@Test(expected) : 申明出会发生的异常,比如 @Test(expected =Exception.class)

@Before : 跟junit 3.8 上的setUp() 方法同样的效果,方法名最好和setUp()一样,但不强求,在每一个测试方法之前被执行

@After : 跟junit 3.8 上的tearDown() 方法同样的效果,方法名最好和tearDown()一样,但不强求,在每一个测试方法之后被执行

@BeforeClass : 被该注解申明的方法,功能是:在所有的测试方法之前执行,只执行一次

@AfterClass : 被该注解申明的方法,功能是:在所有的测试方法之后执行,只执行一次

@Ignore :让 测试方法 或 测试类 不被执行,让其失去测试的功能

 

 

u  代码演示

package com.vp.demo;

 

importstatic org.junit.Assert.*;

 

import org.junit.Ignore;

import org.junit.Test;

import org.junit.runners.JUnit4;

 

publicclass ComputeTest {

    Compute compute = new Compute();

 

    @Ignore

    @Test

    publicvoid testAdd() {

       // 测试这个加法运算的结果是否在正确的

       // 通过断言来进行判断

       assertEquals(compute.add(1, 2), 3);

    }

 

    @Test(expected=NullPointerException.class)

    publicvoid testDiv() {

       assertEquals(compute.div(null, 3), 3.3, 0.1);

 

    }

 

}

 

 

u    测试的分类  

1黑盒测试

黑盒,顾名思义,就是把所有东西装到一个盒子里,看不到内部逻辑,只能通过外部的可见的功能模块,对软件进行测试。比如说一个网站的登陆功能,你不知道它的内部逻辑是怎样的,只能通过网页的注册输入文本框和注册按钮,来测试注册这个功能是否正常。一般黑盒测试也叫数据驱动测试或者功能测试(通过输入数据来确定功能是否完整是否正常),

一般它所关注的点如下:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误?

2白盒测试

白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。(一般的接口测试也可以理解为白盒测试,你自己清楚的知道各个业务流的逻辑走向,可以有效的制定一些测试用例,不需要盲目的通过功能点去做各项测试)白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至少测试一遍。2、对所有的逻辑判定,取“真"与取“假”的两种情况都能至少测一遍。3、在循环的边界和运行的界限内执行循环体。4、测试内部数据结构的有效性,等等。

3.灰盒测试

灰盒测试,是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法但是实际上灰盒测试用到的领域挺少的

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值