代码改变世界

软件测试2019:第二次作业

2019-03-23 15:36  王亚娟  阅读(203)  评论(1编辑  收藏  举报

一、什么是单元测试

程序主要是由一个个的 Class 组成的,一个类或一个对象当然也是一个单元,而比类更小的单元是类的方法(函式)。如果类中的基本单元——如某些方法不能正常工作,在某些输入条件下会得出错误的执行结果,那么如何保证类/对象乃至整个应用软件或系统作为一个整体能正常工作呢?所以,简单说,单元测试的目的就是首先保证一个系统的基本组成单元、模块(如对象以及对象中的方法)能正常工作。


二、进行单元测试的意义

看上去像是增加了代码量,但是实际上却是减少了之后可能对代码修改的几率,尽可能的实现一次性编写就能成功的这个梦想。

 

三、工具

JUnit3/JUnit4

 

四、什么是JUnit

基于测试驱动开发的测试框架,是xUnit系列的一个子系列。说简单点就是一个用于java测试的工具箱,里面有很多方法和规范可以供我们直接使用。

 

五、JUnit3/JUnit4的比较

JUnit3测试类需要继承TestCase

JUnit4不需要继承任何类

JUnit3测试函数约定:public、void、test开头、无参数

JUnit4需要在测试函数前面加上@Test

 

六、JUnit单元测试基础要点

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

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

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

 4.创建测试类的步骤:

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

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

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

 在junit 4 当中测试类无需继承于 TestCase类,测试方法的名字也无需以test开头,主要以注解的方式来定义,只要在测试方法加上@Test就可以进行测试,但有些原则还是要以junit3 的风格来设计,比如测试方法以test开头。

 

@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 :让 测试方法 或 测试类 不被执行,让其失去测试的功能

 

七、总结

学习JUnit,感慨良多。首先是使用方便,其次是它的实现结构很精巧,有很多值得我们去学习的地方。而现在我所了解的仅仅是JUnit的皮毛,需要在今后学习中,更加努力,不断的摸索实践。