JUnit的基本知识
(1)??? JUnit是什么?
JUnit是基于面向对象构建的java单元测试框架。用于组织测试用例。以往的测试做法——写一个含有main方法的类相比,JUnit更易于对测试用例进行管理。
(2)??? 如何安装JUnit?
在myEclipse中提供了Junit插件,所以可以利用向导直接倒入
如下所示:右键项目——〉properities——〉Add library——〉选择Junit
?
选择加入Junit的版本号,点击finish
?
(3)??? 如何利用JUnit进行单元测试?(难点是一些测试用例的编写?测试用例的边界如何确定?)
- 创建测试类,继承junit.framework.TestCase,利用eclipse可以很方便的开发JUnit测试用例(见1)
- 书写测试方法,提供类似于如下函数签名的测试方法(必须以 test开头):
public void testXXXXX();(测试类的框架见2)
- 编译,书写完test case后,编译所写的test case类
- 运行,启动junit test runner,来运行这个test case(MyEclipse提供了运行Junit的图形化窗口 见3)。
1利用eclipse开发JUnit测试用例:
右键需要测试的类——〉new——〉Junit Test case(位于java\Junit下)
注意:package指明测试类所在的包,便于管理
??? Name:测试类的名字
??? Superclass:必须继承Junit.framework.TestCase
??? Class undertest:被测试的类的名字
警告信息:如果在工程的build path中没有JUnit需要的包Junit.jar则需要点击Click here 将Junit.jar导入。
2测试类的框架
import junit.frmework.TestCase;
public class TestSample extends TestCaset{
//setUp、tearDown方法可以没有
protected void setUp(){
??????? //初始化……
}
potected void tearDown(){
//撤销初始化……
}
//注意需要测试方法必须为public,返回值为void,名字必须以test开头
public void testMethod1(){
assertTrue( true);
}
?
}
3运行测试用例:右键测试类——〉Run as Junit Test,打开Junit视图
?
其中的状态栏显示测试用例通过和未通过的比例,绿色表示通过,红色表示未通过,点击下边的具体一个未通过的测试方法,还可以看到未通过的原因信息。
(4)??? JUnit的执行机制?
?
Junit.textui.TextRunner通过TestSuite.TestSuite来生成测试例,通过TestSuite.run(TestResult)来实现测试的真正执行,执行过程中通过注册Listener到TestResult,然后把TestResult的实例result以参数形式传递给测试的真正执行函数TestSuite.run(TestResult)来实现测试结果的收集。
(5)?? JUnit的各种断言:
assertEquals([String message], expected, actual)——这是使用得最多的断言形式。expected-是你的期望值(通常要硬编码),actual-被测代码实际产生的值,message-可选的消息,如果提供的话,将会在发生错误的时候报告这个消息。
assertNull([String message],java.lang.Object object)——验证一个给定的对象是否为Null(或者为非Null),如果答案为否,则将会失败。message参数是可选的。
assertSame( [String message], expected,actual)——验证expected参数和actual参数所引用的是否为同一对象,如果不是的话,将会失败。Message参数是可选的。
assertTrue( [String message],boolean condition)——验证给定的二元条件是否为真,如果为假的话,将会失败。Message参数是可选的。
assertFalse( [String message],boolean condition)——验证给定的二元条件是否为假,如果不为假的话,将会失败。Message参数是可选的
fail( String message )——使测试立即失败,其中message参数使可选的。这种断言通常被用于标记某个不应该到达的分支(例如,在一个预期发生的异常之后)