JUint测试软件使用报告.docx
- 文档编号:23812298
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:9
- 大小:77.63KB
JUint测试软件使用报告.docx
《JUint测试软件使用报告.docx》由会员分享,可在线阅读,更多相关《JUint测试软件使用报告.docx(9页珍藏版)》请在冰豆网上搜索。
JUint测试软件使用报告
JUnit测试软件使用报告
小组成员:
李明辉,钟承达,刘明,xxx
目录
一关于JUnit软件
1.JUnit软件的简介
JUnit是Java社区中知名度最高的单元测试工具。
由ErichGamma和KentBeck共同开发完成。
JUnit是一款开源软件,支持的语言包括Smalltalk,Java,C++,Perl等等,同时JUnit支持的集成开发环境(IDE)有JBuilder,VisualAge,Eclipse等。
JUnit测试是程序员测试,即所谓白盒测试,程序员知道被测试的软件如何完成功能和完成什么样的功能。
2.JUnit软件的功能
JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。
它是用于单元测试框架体系xUnit的一个实例(用于java语言)。
它包括以下功能:
(1)可供选择的其他前端或者test-runner,用来显示你的测试结果
(2)用单独的classloader来运行每个单元测试,以避免副作用
(3)标准的资源初始化和回收方式(setUp和tearDown)
(4)各种不同的assert方法,让检查测试结果的操作变得更容易
(5)同流行的工具,比如Ant,以及流行IDE比如Eclipse,JBuilder整合
3.JUnit的优点
JUnit在极限编程和重构中是被极力推荐使用的工具,因为在实现自动单元测试的情况下可以大大的提高开发的效率,和其它测试软件相比,JUnit主要包括一些优点:
(1)开源工具,可以免费使用,可以找到很多实际项目中的应用示例。
由于源码开放,开发者还可以根据需要扩展JUnit功能
(2)可以将测试代码和产品代码分开
(3)测试代码编写容易,功能强大
(4)自动检验结果并且提供立即的反馈
(5)易于集成到开发的构建过程中,在软件的构建过程中完成对程序的单元测试
(6)测试包结构便于组织和集成运行,支持图形交互模式和文本交互模式
4.JUnit的安装
Java的JUnit可从网上免费下载,网址是http:
//junit.org,安装步骤为:
(1)将下载的junit.zip解压到你指定的目录
(2)设置环境变量:
Variable:
CLASSPATH和环境变量路径VariableValue:
.;InstallPath/junit.jar
(3)测试运行,进入命令提示符安装目录下
二本组研究的软件功能
本小组对JUnit软件的核心类和单元测试的步骤做了学习,此外在单独测试一个测试类的基础上研究了如何实现测试多个类,下面主要介绍JUnit软件的核心类接口以及JUnit单元测试的步骤,关于如何测试单个类和多个类,我们在第三节和第四节做主要介绍。
1.JUnit的核心类
下图是JUnit软件的框架类:
下面我们主要介绍TestRunner,TestCase,TestSuite,TestResult,TestListener这五个主要接口类在JUnit单元测试中所起的作用:
(1)TestRunner(测试运行器)
在JUnit中是没有TestRunner接口的,只有一个所有TestRunner都继承的BaseTestRunner。
BaseTestRunner执行测试并提供相关的结果的统计信息,它包含三个TestRunner类:
一个用于文本控制台,一个用于Swing,还有一个AWT(遗产代码,很少有人用)。
如图是实际运用中的Swingtestrunner:
绿色的状态条表示通过了测试,而红色则代表出现了错误。
(2)TestCase(测试用例)
Assert类的子类,包含测试过程中所调用的一些方法。
用户在定义测试实例时,需要继承TestCase类。
类中的主要方法有:
setUp():
用于如变量赋值等测试的初始化处理。
tearDown():
用于如文件关闭等测试的结束处理。
run():
测试实例的执行,并把测试结果放入测试结果对中。
以上方法由系统自动调用,其调用顺序为setUp→run→tearDown。
(3)TestSuite(测试集合)
TestSuite对象是测试实例的集合。
当有多个测试实例需要一起执行时,可把它们加入到TestSuite中,一次性地执行。
若你没有提供自己的TestSuite,testrunner会自动创建一个。
通常情况下TestAll类仅仅包括一个静态的suite方法,这个方法会注册应用程序需要定期执行的所有Test对象(包括TestCase对象和TestSuite对象),下面是一个典型的TestAll类:
importjunit.framework.Test;
importjunit.framework.TestSuite;
importjunitbook.sampling.TestDefaultController;
publicclassTestAllextendTestCase
{
publicstaticTestsuite()
{
TestSuitesuite=newTestSuite("Alltestsfrompart1");
suite.addTestSuite(TestCalculator3.class);
suite.addTestSuite(TestDefaultController.class);
returnsuite;
}
}
(4)TestResult
TestResult类的对象包含了测试结果。
一般来说,用户不需要对TestResult进行操作,测试结果由系统提供的测试工具自动输出,而失败则会创建一个TestFailure对象。
然后TestRunner会使用TestResult来报告测试结果。
没有TestFailure对象进度条就用绿色,否则进度条用红色并输出失败测试的数目。
(5)TestListener
TestListener用于帮助对象访问TestResult并创建有用的报告,虽然Testlistener接口是JUnit框架的重要部分,但是我们编写自己的测试时不必实现这个接口。
只有在需要扩展JUnit框架时才会需要实现这个接口。
2.JUnit单元测试的步骤
(1)重载setUp(),封装测试环境初始化及测试数据准备
(2)设计测试方法,以testXXX命名
(3)在测试方法中使用断言方法如assertEquals(),assertTrue()等
(4)设计测试套件,或使用缺省的测试套件,调用TestRunner执行
测试脚本,生成测试结果
(5)重载tearDown()析构测试环境,执行收尾动作
三测试用例的设计
1.单个测试类的实现
(1)根据以上方法,我们首先设计一个待测类,这里以一个简单的计算Calculator类作为待测类:
publicclassCalculator
{
publicintadd(inta,intb){
returna+b;
}
publicintminus(inta,intb){
returna-b;
}
publicintmultiply(inta,intb){
returna*b;
}
publicintdivide(inta,intb)throwsException{
if(0==b){
thrownewException("除数不能为零!
");
}
returna/b;
}
}
(2)重载setUp(),封装测试环境初始化及测试数据准备
publicclassCalculatorTestextendsTestCase{
privateCalculatorcal;
publicvoidsetUp(){
cal=newCalculator();
}
publicvoidtearDown(){
}
这里需要注意的是每个测试类都必须以TestCase作为父类,每个测试方法执行前都会调用setup()方法生成对象,而tearDown()用于析构测试环境,执行收尾动作。
(3)为类中的每个方法设计测试方法,且一个方法可以有多个测试方法,输入的不同情况会有不同的testcase出现,如下所示:
publicvoidtestAdd(){
intresult=cal.add(1,2);
Assert.assertEquals(3,result);
}
publicvoidtestMinus(){
intresult=cal.minus(1,2);
Assert.assertEquals(-1,result);
}
publicvoidtestMultiply(){
intresult=cal.multiply(2,3);
Assert.assertEquals(6,result);
}
publicvoidtestDivide(){
intresult=0;
try{
result=cal.divide(6,4);
}
catch(Exceptione){
e.printStackTrace();
Assert.fail();
}
Assert.assertEquals(1,result);
}
publicvoidtestDivide2(){
Throwabletx=null;
try{
cal.divide(4,0);
Assert.fail();
}
catch(Exceptionex){
tx=ex;
}
Assert.assertNotNull(tx);
Assert.assertEquals(Exception.class,tx.getClass());
Assert.assertEquals("除数不能为零!
",tx.getMessage());
}
在测试方法中每个方法名称必须以test开头,同时我们使用断言方法如assertEquals(),assertTrue(),它们是用来判断和预期的结果是否相同,Assert.fail()用于期望该行代码永远不会被执行,断言失败则停止执行立即失败。
2.多个测试类的同时运行
这里我们假设现在有两个测试类:
CalculatorTest.java和LargestTest.java,这时我们的测试用例可以设计为:
publicclassTestAllextendsTestCase{
publicstaticTestsuite()
{
TestSuitesuite=newTestSuite();
suite.addTestSuite(CalculatorTest.class);
suite.addTestSuite(LargestTest.class);
returnsuite;
}
}
这里方法名必须是suite,返回一个Test类型,且是static。
在这个测试方法中生成了TestSuite,根据suite.addTestSuite可以增加想要测试类对象,最后返回suite,根据TestSuite实现了Test接口。
四测试的实现步骤以及运行截图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JUint 测试 软件 使用 报告