软件测试第二次作业
一、什么是单元测试
面向对象程序主要是由一个个的类组成的,一个类或一个对象就是一个单元,而比类更小的单元是类的方法。如果类中的基本单元——如某些方法不能正常工作,在某些输入条件下会得出错误的执行结果,那么如何保证类/对象乃至整个应用软件或系统作为一个整体能正常工作呢?所以,简单说,单元测试的目的就是首先保证一个系统的基本组成单元、模块(如对象以及对象中的方法)能正常工作。
二、进行单元测试的意义
看上去像是增加了代码量,但是实际上却是减少了之后可能对代码修改的几率,尽可能的实现一次性编写就能成功的这个梦想。
三、工具
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很强大,也很便捷。