《JUnit单元测试.ppt》由会员分享,可在线阅读,更多相关《JUnit单元测试.ppt(22页珍藏版)》请在三一办公上搜索。
1、JUnit单元测试,1 JUnit简介,2 JUnit下载与配置,3 第一个JUnit单元测试,4 知识要点,1 JUnit简介,JUnit是一个开源的java单元测试框架。在1997年,由 Erich Gamma 和 Kent Beck 开发完成。正如常言道:“麻雀虽小,五脏俱全。”JUnit设计的非常小巧,但是功能却非常强大:(1)提供的API可以让用户写出测试结果明确的可重用单元测试用例。(2)提供了三种方式来显示用户的测试结果,而且还可以扩展。(3)提供了单元测试用例成批运行的功能。(4)超轻量级而且使用简单,没有商业性的欺骗和无用的向导。(5)整个框架设计良好,易扩展。对不同性质的被
2、测对象,如Class,Jsp,Servlet,Ejb等,JUnit有不同的使用技巧。本书中仅以Class测试为例。,2 JUnit下载与配置,由于Eclipse中集成了JUnit,所以不必下载,如果想要最新的JUnit类库可以在互联网上下载,之后在Eclipse构建路径中添加JUnit类库即可。下面介绍一下Eclipse中如何配置JUnit。(1)右键单击项目“WebApplication”,选择“Build Path”“Configure Build Path”菜单命令,弹出构建路径对话框,选择“Libraries”选项,如图5-1所示。,图5-1 构建路径对话框,2 JUnit下载与配置,
3、(2)单击“Add External JARs”可以添加额外的JUnit类库。单击“Add Library”添加Eclipse中自带的JUnit类库,如图5-2所示。,图5-2 添加Eclipse中自带的JUnit类库,2 JUnit下载与配置,(3)选择“Junit”,单击“Next”按钮,出现添加类库对话框,在“JUnit library version”一栏中有“JUnit 3”和“JUnit 4”两个选项,本例中选择“JUnit 4”如图5-3所示。,图5-3 选择JUnit版本,2 JUnit下载与配置,(4)单击“Finish”按钮,完成JUnit类库的添加。如图5-4所示,JUn
4、it类库已经加入当前项目中了。,图5-4 完成JUnit类库添加,2 JUnit下载与配置,(5)单击“OK”按钮完成。此时在包资源管理器视图(Package Explorer)中可以看到JUnit类库信息,如图5-5所示。,图5-5 查看JUnit类库信息,3 第一个JUnit单元测试,5.3.1 编辑类文件编辑类文件步骤如下。(1)新建包。(2)在包中新建一个JUnit测试类文件JUnitExample.java,该类中只有一个方法speak(),返回字符串“Hello World!”,代码如下。package com.myjunit.example;public class JUnitE
5、xample/待测试的方法,返回字符串“Hello World!”public String speak()return Hello World!;,3.2 创建TestCase测试类,现在开发JUnit的“Hello World!”例子。(1)建立测试。在“WebApplication”工程上单击右键,选择“New”“Other”菜单命令,展开“Java”选项,选择“JUnit”“JUnit Test Case”,如图5-6所示。,图5-6 新建JUnit Test Case测试类,3.2 创建TestCase测试类,(2)单击“Next”按钮,弹出新建JUnit测试案例对话框。在“Name
6、”一栏中填入测试案例的名字“TestGetHelloWorldPrompt”,在“Class under test”中填入将要被测试的类“”。如图5-7所示。,图5-7 新建JUnit测试案例对话框,3.2 创建TestCase测试类,(3)单击“Next”按钮,弹出选择待测试方法对话框,选择“JUnitExample”类的“speak()”方法,单击“Finish”按钮完成。编辑“TestGetHelloWorldPrompt”类代码如下。package com.myjunit.test;import junit.framework.TestCase;import com.myjunit.e
7、xample.JUnitExample;public class TestGetHelloWorldPrompt extends TestCasepublic void setUp()throws Exception/初始化public void tearDown()throws Exception/撤销初始化public void testSpeak()/构造类JUnitExample的实例测试JUnitExample jue=new JUnitExample();/assertEquals方法是JUnit提供的辅助函数,用于帮助确定某个被测试的函数是/否正常工作,称为“断言”。assert
8、Equals(expected,actual):expected是/期望值,actual是被测试代码实际产生的值assertEquals(Hello e!,jue.speak();,3.3 运行,右键单击工程“WebApplication”,选择“Run As”“JUnit Test”选项,出现JUnit视图,如图5-8所示。,图5-8 运行单元测试,3.3 运行,可以看到JUnit视图中出现一个红条,“Failures”为1,说明测试失败了,查看失败原因可以在“Failure Trace”中查找信息。也可以单击“”查看。如图5-9所示,说明测试数据与实际数据不一致,导致测试失败。,图5-9
9、比较测试数据与实际数据,3.3 运行,下面,我们修改“TestGetHelloWorldPrompt”类中的“testSpeak”方法,代码如下。public void testSpeak()/fail(Not yet implemented);JUnitExample jue=new JUnitExample();assertEquals(Hello World!,jue.speak();,3.3 运行,我们再次运行测试。JUnit视图中出现一个绿条,表明测试成功。如图5-10所示。,图5-10 运行成功界面,3.4 成批运行TestCase,新建一个“JUnit Test Suite”类,
10、名称为“AllTests”,代码如下。package com.myjunit.test;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;public class AllTests public static Test suite()/构造TestSuite类,可以不带参数TestSuite suite=new TestSuite(Test for com.myjunit.test);/$JUnit-BEGIN$/*此处可以添加多个JUnit test。本例中
11、只是使用了前面的一个测试例子。运行AllTests时就可以测试多个JUnit test,测试失败的JUnit test不会影响其他的JUnit test测试*/suite.addTestSuite(TestGetHelloWorldPrompt.class);/*suite.addTestSuite(其他测试类.class);*/$JUnit-END$return suite;,3.4 成批运行TestCase,右键单击类“AllTests”,选择“Run As”“JUnit Test”菜单命令,结果如图5-11所示。,图5-11 成批运行单元测试,4 知识要点,1JUnit中的初始化与撤销在
12、“TestGetHelloWorldPrompt”类中,我们可以看到有setUp与tearDown两个方法,这两个方法是junit framework.TestCase中提供初始化和反初始化每个测试的方法。setUp方法:在每个测试方法调用前被调用,负责初始化测试方法所需要的测试环境;tearDown方法:在每个测试方法被调用之后被调用,负责撤销测试环境。它们与测试方法的关系可以描述如下:测试开始setUptestXXXtearDown测试结束在setUp和tearDown中的代码是不应该与测试方法相关的,而应该是全局相关的。例如对于测试方法A和B,在setUp和tearDown中的代码应该是
13、A和B都需要的代码。,4 知识要点,2JUnit的各种断言JUnit为我们提供了一些辅助函数,它们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,把这些辅助函数称为断言。下面我们来介绍一下JUnit的各种断言。assertEquals函数原型1:assertEquals(String message,expected,actual)参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。expected是期望值,通常都是用户指定的内容。actual是被测试的代码返回的实际值。函数原型2:assertEquals(String message,expect
14、ed,actual,tolerance)参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。expected是期望值,通常都是用户指定的内容。actual是被测试的代码返回的实际值。tolerance是误差参数,参加比较的两个浮点数在这个误差之内则会被认为是相等的。,4 知识要点,assertTrue函数原型:assertTrue(String message,Boolean condition)参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。condition是待验证的布尔型值。该断言用来验证给定的布尔型值是否为真,如果结果为假
15、,则验证失败。当然,还有验证为假的测试条件:函数原型:assertFalse(String message,Boolean condition)该断言用来验证给定的布尔型值是否为假,如果结果为真,则验证失败。assertNull函数原型:assertNull(String message,Object object)参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。object是待验证的对象。该断言用来验证给定的对象是否为null,如果不为null,则验证失败。相应地,还存在可以验证非null的断言:函数原型:assertNotNull(String messa
16、ge,Object object)该断言用来验证给定的对象是否为非null,如果为null,则验证失败。,4 知识要点,assertSame函数原型:assertSame(String message,expected,actual)参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。expected是期望值。actual是被测试的代码返回的实际值。该断言用来验证expected参数和actual参数所引用的是否是同一个对象,如果不是,则验证失败。相应地,也存在验证不是同一个对象的断言:函数原型:assertNotSame(String message,expec
17、ted,actual)该断言用来验证expected参数和actual参数所引用的是否是不同对象,如果所引用的对象相同,则验证失败。Fail函数原型:Fail(String message)参数说明:message是一个可选的消息,如果提供,将会在发生错误时报告这个消息。该断言会使测试立即失败,通常用在测试不能达到的分支上(如异常)。,4 知识要点,3建立测试案例的步骤 建立一个的实例。定义一些以“test”开头的无返回方法testXXX(例如testShow(),testSay()等)。在testXXX方法中调用assertEquals()方法,它用来比较我们预期的值和由要测试类的方法返回的值。运行测试。4Errors,Failures统计的区别Failures是单元测试所期望发生的错误,它预示你的代码有bug,不过也可能是你的单元测试代码有逻辑错误(注意是逻辑错误)。Errors最好不要出现,如果发生了Error可以按照下面的顺序来检查:检查测试所需的环境,如:数据库连接。检查单元测试代码。检查系统代码。,
链接地址:https://www.31ppt.com/p-5436436.html