JUnit入门.docx
- 文档编号:8496363
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:365.06KB
JUnit入门.docx
《JUnit入门.docx》由会员分享,可在线阅读,更多相关《JUnit入门.docx(18页珍藏版)》请在冰豆网上搜索。
JUnit入门
JUnit
1、JUnit简介
JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。
它是用于单元测试框架体系xUnit的一个实例(用于java语言)。
主要用于白盒测试,回归测试。
1.1、JUnit的好处和JUnit测试编写原则
1.1.1使用JUnit的好处:
可以使测试代码与产品代码分开。
针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试。
易于集成到测试人员的构建过程中,JUnit和Ant的结合可以实施增量开发。
JUnit是公开源代码的,可以进行二次开发。
可以方便地对JUnit进行扩展。
1.1.2JUnit测试编写原则:
简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写。
使测试单元保持持久性。
可以利用既有的测试来编写相关的测试。
1.2、JUnit的特征
1.2.1提供的API可以让你写出测试结果明确的可重用单元测试用例
1.2.2提供了三种方式来显示你的测试结果,而且还可以扩展
1.2.3提供了单元测试用例成批运行的功能
1.2.4超轻量级而且使用简单,没有商业性的欺骗和无用的向导
1.2.5整个框架设计良好,易扩展
1.3JUnit框架组成
1.3.1对测试目标进行测试的方法与过程集合,可称为测试用例(TestCase)。
1.3.2测试用例的集合,可容纳多个测试用例(TestCase),将其称作测试包(TestSuite)。
1.3.3测试结果的描述与记录。
(TestResult)。
1.3.4测试过程中的事件监听者(TestListener)。
1.3.5每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素(TestFailure)
1.3.6JUnitFramework中的出错异常(AssertionFailedError)。
1.4JUnit中常用的接口和类
1.4.1Test接口:
运行测试和收集测试结果
Test接口使用了Composite设计模式,是单独测试用例(TestCase),聚合测试模式(TestSuite)及测试扩展(TestDecorator)的共同接口。
它的publicintcountTestCases()方法,用来统计测试时有多少个TestCase。
另外一个方法就是publicvoid run(TestResult),TestResult是实例接受测试结果,run方法执行本次测试。
1.4.2TestCase抽象类:
定义测试中固定方法
TestCase是Test接口的抽象实现,(不能被实例化,只能被继承)其构造函数TestCase(stringname)根据输入的测试名称name创建一个测试实例。
由于每一个TestCase在创建时都要有一个名称,若测试失败了,便可识别出是哪个测试失败。
TestCase类中包含的setUp()、tearDown()方法。
setUp()方法集中初始化测试所需的所有变量和实例,并且在依次调用测试类中的每个测试方法之前再次执行setUp()方法。
tearDown()方法则是在每个测试方法之后,释放测试程序方法中引用的变量和实例。
编写测试用例时,只需继承TestCase,来完成run方法即可,然后JUnit获得测试用例,执行它的run方法,把测试结果记录在TestResult之中。
1.4.3Assert静态类:
一系列断言方法的集合
Assert包含了一组静态的测试方法,用于期望值和实际值比对是否正确,即测试失败,Assert类就会抛出一个AssertionFailedError异常,JUnit测试框架将这种错误归入Failes并加以记录,同时标志为未通过测试。
如果该类方法中指定一个String类型的传参则该参数将被做为AssertionFailedError异常的标识信息,告诉测试人员改异常的详细信息。
JUnit提供了6大类31组断言方法,包括基础断言、数字断言、字符断言、布尔断言、对象断言。
下表为Assert超类所提供的8个核心方法
assertTure
断言条件为真。
若不满足,方法抛出带有相应的信息(如果有的话)的AssertionFaildeError异常
AssertFalse
断言条件为假。
若不满足,方法抛出带有相应的信息(如果有的话)的AssertionFaildeError异常
assertEquals
断言两个对象相等。
若不满足,方法抛出带有相应的信息(如果有的话)的AssertionFaildeError异常
assertNotNull
断言对象不为null。
若不满足,方法抛出带有相应的信息(如果有的话)的AssertionFaildeError异常
assertNull
断言对象为null。
若不满足,方法抛出带有相应的信息(如果有的话)的AssertionFaildeError异常
assertSame
断言两个引用指向同一个对象。
若不满足,方法抛出带有相应的信息(如果有的话)的AssertionFaildeError异常
assertNotSame
断言两个引用指向不同的对象。
若不满足,方法抛出带有相应的信息(如果有的话)的AssertionFaildeError异常
Fail
让测试失败,并给出指定的信息
1.4.4TestResult结果类和其它类与接口
TestResult结果类集合了任意测试累加结果,通过TestResult实例传递个每个测试的Run()方法。
TestResult在执行TestCase是如果失败会异常抛出。
TestListener接口是个事件监听规约,可供TestRunner类使用。
它通知listener的对象相关事件,方法包括测试开始startTest(Testtest),测试结束endTest(Testtest),错误,增加异常addError(Testtest,Throwablet)和增加失败addFailure(Testtest,AssertionFailedErrort)。
TestFailure失败类是个“失败”状况的收集类,解释每次测试执行过程中出现的异常情况。
其toString()方法返回“失败”状况的简要描述
JUnit提供的一个代码框架
publicclassTestXXXextendsTestCase{
publicTestXXX(Stringname){
super(name);
}
/**
*OverwritethesetUp().
*/
publicvoidsetUp(){
try{
super.setUp();
/*yourinitializecodehere*/
}catch(Exceptionex){
ex.printStackTrace();
}
}
/**
*OverwritethetearDown().
*/
publicvoidtearDown(){
try{
/*yourdestroycodehere*/
super.tearDown();
}catch(Exceptionex){
ex.printStackTrace();
}
}
/**
*Testthespecifiedmethod
*/
publicvoidtestXXX(){
}
}
分析这个框架代码,首先需要继承TestCase这个JUnit提供的类,然后就写一个带参数的构造方法,接着覆盖setUp(),teardown()这两个方法,然后自己写下void型而且不带参数的testXXX()方法对类别里面的逻辑方法进行测试。
testXXX()后面的XXX值得是我要测试的方法的名字,比如说我要测试String类里面的equals方法,其相应的测试类名为TestString,测试方法为publicvoidtestEquals();setup()方法进行初始化工作,tearDown()进行销毁工作。
2、Eclipse中JUnit的使用
Eclipse集成了JUnit,可以非常方便地编写TestCase。
Eclipse自带了一个JUnit的插件,不用安装就可以在你的项目中开始测试相关的类,并且可以调试你的测试用例和被测试类。
下面介绍一下Eclipse中JUint使用步骤:
a.创建一个新的JavaProject,File-->New-->JavaProject;
b.输入Projectname之后点Finish;
c.在src中新建一个Class,New—>Class;
d.在Name栏中输入Class名,选中publicstaticvoidmain(string[]args);
e.编辑一段代码,例如DoubleAdd.java;
f.在Eclipse中加入一个JUnit库,先选择Properties;
弹出Propertiesfordoubleadd对话框,选择JavaBuildPath中的Libraries标签,选择AddLibrary,弹出AddLibrary对话框,选择JUnit点Next;
选择JUnitlibraryversion,再这里我们就选择JUnit3,然后点Finish;
这样就将一个JUnit3的库加入到doubleadd中了;
g.新建一个JUnitTestCase,New-->JUnitTestCase
弹出NewJUnitTestCase对话框,输入Name选中setUp()和tearDown,点Finish;
这样就新建了一个JUnitTestCase
h.编辑一个testcase
i.然后运行JUnitTest,得出结果,RunAs-->JUnitTest;
如果assert成功,则会出现绿色的条带。
如果有任何一个方法没有assert成功,就会显示红色的条带,并再下面的FailureTrace中说明原因。
以上就是一个简单的JUnit在Eclipse中使用的实例。
3、后记
从上面的来看,JUnit的使用并不很难,但关键就是最后一步完成测试码,即编写TestCase。
要编写一个好的TestCase却并非易事。
一个不好的TestCase往往是既浪费了时间,也起不了实际的作用。
相反,一个好的TestCase,不仅可以很好的指出代码中存在的问题,而且也可以作为代码更准确的文档,同时还在持续集成的过程中起非常重要的作用。
我们在作测试写TestCase时需要注意的几点:
测试的独立性:
一次只测试一个对象,方便定位出错的位置。
这有两层意思:
一个TestCase,只测试一个对象;一个TestMethod,只测试这个对象中的一个方法。
给测试方法一个合适的名字。
一般取名为原来的方法名后加一个Test。
在assert函数中给出失败的原因,如:
assertTrue(“…shouldbetrue”,……),方便查错。
在这个例子中,如果无法通过assertTrue,那么给出的消息将被显示。
在JUnit中每个assert函数都有第一个参数是出错时显示消息的函数原型。
测试所有可能引起失败的地方,如:
一个类中频繁改动的函数。
对于那些仅仅只含有getter/setter的类,如果是由IDE(如Eclipse)产生的,则可不测;如果是人工写,那么最好测试一下。
在setUp和tearDown中的代码不应该是与测试方法相关的,而应该是全局相关的。
如针对与测试方法A和B,在setUp和tearDown中的代码应该是A和B都需要的代码。
测试代码的组织:
相同的包,不同的目录。
这样,测试代码可以访问被测试类的protected变量/方法,方便测试代码的编写。
放在不同的目录,则方便了测试代码的管理以及代码的打包和发布。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JUnit 入门