JUnit单元测试(二)--JUnit基础
1、基础介绍
1.JUnit是一种测试代码的框架,测试的目的是:保证代码没错,而不是保证代码正确。
2.测试类一般不要和目标类放在一起,但编译成的class文件是放在一起的,这样可以保证产品代码与测试代码分离,互不影响。
3.单元测试主要是来测试程序的结果和自己期望的值是否相等。
2、JUnit测试框架目前大体分为两种(JUnit 3.8 和 JUnit 4.x)
2.1、JUnit 3.8
涉及到的包一般是 import junit.framework.*
在 JUnit 3.8 中,测试类要继承TestCast类,而TestCast类又继承于Assert类,测试方法需满足如下原则:
1)修饰符设为 public
2)返回类型 void
3)没有方法参数
4)方法名称必须以test开头
5)测试类都继承于TestCase类
另外,使用过程中,测试类不能依赖于测试方法的执行顺序
在新建的测试类中,有两个方法需要强调一下:
setUp方法和testDown方法:都是TestCase类的方法
1)setUp方法是在执行每个测试方法之前执行的,可以做一些初始化的工作,例如类实例声明。
2)testDown方法是在执行每个测试方法之后执行的,例如在此销毁对象。
2.2、JUnit 4
涉及到的包是 import org.junit.*
在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简介
1、JUnit简介
JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。它是用于单元测试框架体系xUnit的一个实例(用于java语言)。主要用于白盒测试,回归测试。
1.1、JUnit的好处和JUnit测试编写原则
1.1.1 使用JUnit的好处:
可以使测试代码与产品代码分开。
针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试。
易于集成到测试人员的构建过程中,JUnit和Ant的结合可以实施增量开发。
JUnit是公开源代码的,可以进行二次开发。
可以方便地对JUnit进行扩展。
1.1.2 JUnit测试编写原则:
简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写。
使测试单元保持持久性。
可以利用既有的测试来编写相关的测试。
1.2、JUnit的特征
1.2.1 提供的API可以让你写出测试结果明确的可重用单元测试用例
1.2.2 提供了三种方式来显示你的测试结果,而且还可以扩展
1.2.3 提供了单元测试用例成批运行的功能
1.2.4 超轻量级而且使用简单,没有商业性的欺骗和无用的向导
1.2.5 整个框架设计良好,易扩展
1.3 JUnit框架组成
1.3.1 对测试目标进行测试的方法与过程集合,可称为测试用例(TestCase)。
1.3.2 测试用例的集合,可容纳多个测试用例(TestCase),将其称作测试包(TestSuite)。
1.3.3 测试结果的描述与记录。(TestResult) 。
1.3.4 测试过程中的事件监听者(TestListener)。
1.3.5 每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素(TestFailure)
1.3.6 JUnit Framework中的出错异常(AssertionFailedError)。
1.4 JUnit中常用的接口和类
1.4.1 Test接口:运行测试和收集测试结果
Test接口使用了Composite设计模式,是单独测试用例(TestCase),聚合测试模式(TestSuite)及测试扩展(TestDecorator)的共同接口。
它的public int countTestCases()方法,用来统计测试时有多少个TestCase。
另外一个方法就是public void run( TestResult),TestResult是实例接受测试结果,run方法执行本次测试。
1.4.2 TestCase抽象类:定义测试中固定方法
TestCase是Test接口的抽象实现,(不能被实例化,只能被继承)其构造函数TestCase(string name)根据输入的测试名称name创建一个测试实例。由于每一个TestCase在创建时都要有一个名称,若测试失败了,便可识别出是哪个测试失败。
TestCase类中包含的setUp()、tearDown()方法。
setUp()方法集中初始化测试所需的所有变量和实例,并且在依次调用测试类中的每个测试方法之前再次执行setUp()方法。
tearDown()方法则是在每个测试方法之后,释放测试程序方法中引用的变量和实例。
编写测试用例时,只需继承TestCase,来完成run方法即可,然后JUnit获得测试用例,执行它的run方法,把测试结果记录在TestResult之中。
1.4.3 Assert静态类:一系列断言方法的集合
Assert包含了一组静态的测试方法,用于期望值和实际值比对是否正确,即测试失败,Assert类就会抛出一个AssertionFailedError异常,JUnit测试框架将这种错误归入Failes并加以记录,同时标志为未通过测试。
如果该类方法中指定一个String类型的传参则该参数将被做为AssertionFailedError异常的标识信息,告诉测试人员改异常的详细信息。
JUnit 提供了6大类31组断言方法,包括基础断言、数字断言、字符断言、布尔断言、对象断言。
下表为Assert超类所提供的
//获取Session ActionContext.getContext().getSession.put("user",user); //获取Application ActionContext.getContext().getApplication("user",user);
//获取Session
作者:zhuangjixiang 发表于2013-4-6 22:45:33 原文链接阅读:0 评论:0 查看评论