JUint单元测试工具

上传人:woxinch****an2018 文档编号:44710390 上传时间:2018-06-14 格式:PPT 页数:35 大小:838KB
返回 下载 相关 举报
JUint单元测试工具_第1页
第1页 / 共35页
JUint单元测试工具_第2页
第2页 / 共35页
JUint单元测试工具_第3页
第3页 / 共35页
JUint单元测试工具_第4页
第4页 / 共35页
JUint单元测试工具_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《JUint单元测试工具》由会员分享,可在线阅读,更多相关《JUint单元测试工具(35页珍藏版)》请在金锄头文库上搜索。

1、BITC 第8章 JUnit测试工具简介主讲:史宝会主讲:史宝会北京信息职业技术学院北京信息职业技术学院 计算机工程系计算机工程系1计算机工程系SWPU计算机工程系计算机工程系JUnit概述 1使用JUnit编写测试2测试的内容 3主 要 内 容2 2SWPU计算机工程系计算机工程系8.1 JUnit概述vJUnit是一个开源的java测试框架,它是Xuint测试体系 架构的一种实现。 vJUnit最初由Erich Gamma 和 Kent Beck所开发。 v在JUnit单元测试框架的设计时,设定了三个总体目标 ,第一个是简化测试的编写,这种简化包括测试框架 的学习和实际测试单元的编写;第二

2、个是使测试单元 保持持久性;第三个则是可以利用既有的测试来编写 相关的测试。 3 3SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v1、构建单元测试 测试代码必须要做的事情: 准备测试所需要的各种条件(创建所有必须的对象 ,分配必要的资源等) 调用要测试的方法 验证被测试方法的行为和期望是否一致 完成后清理各种资源(Internal Only) (Delivered)4 4SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v1、构建单元测试 测试代码用一般的方式编写和编译 当执行测试代码的时,从来不直接运用产品代码5 5SWPU计算机工程系计算机工程系8.2 使

3、用JUnit编写测试 v2、JUnit的各种断言 JUnit提供了一些辅助函数,用于帮助确定某个被测试函数是否工作正常。通常把所有这些函数统称 为断言。 每一个断言(assert)方法都会记录是否失败了( 断言为假)或有错误了(遇到一个意料外的异常) 的情况,并通过JUnit的一些类来报告这些结果当一个失败或者错误出现的时候,当前测试方法的 执行流程将会被中止,但是(位于同一个测试类中 的)其它测试将会继续运行。 6 6SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v2、JUnit的各种断言 assertEquals assertEquals( Sting message,

4、expected, actual ) 相等性测试 expected是期望值(通常都是硬编码的),actual是被 测试代码实际产生的值,message是一个可选的消息, 如果提供的话,将会在发生错误时报告这个消息。 如想用断言来比较浮点数(在Java中是类型为float或 者double的数),则需指定一个额外的误差参数。 assertEquals(Sting message, expected, actual, tolerance) 7 7SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v2、JUnit的各种断言 assertNull assertNull(Sting mes

5、sage,java.lang.Object object) assertNotNull(Sting message,java.lang.Object object) 验证一个给定的对象是否为null(或者为非null),如果答 案为否,则将会失败。Message参数是可选的。8 8SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v2、JUnit的各种断言 assertSame assertSame(Sting message,expected,actual) 验证expected参数和actual参数所引用的是否为同一 个对象,如果不是将会失败。Message参数是可选的 as

6、sertNotSame(Sting message,expected,actual) 验证expected参数和actual参数所引用的是否为不同 的对象,如相同将会失败。Message参数是可选的9 9SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v2、JUnit的各种断言 assertTrue assertTrue(Sting message,Boolean condition) 验证给定的二元条件是否为真,如果为假将会失败 。Message参数是可选的。 assertFalse(Sting message,Boolean condition) 验证给定的二元条件是否为假

7、;如果不是的话(为 真),该测试将会失败,message参数是可选的。 1010SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v2、JUnit的各种断言 Fail Fail(Sting message) 将会使测试立即失败,其中message参数是可选的。 这种断言通常被用于标记某个不应该被到达的分支1111SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v2、JUnit的各种断言 一般而言,一个测试方法包含有多个断言,因为需 要验证该方法的多个方面以及内在的多种联系。 当一个断言失败的时候,该测试方法将会被中止, 从而导致该方法中余下的断言这次就无法执行了,

8、 此时只能是在继续测试之前先修复这个失败的测试 。依此类推,不断地修复一个又一个的测试,沿着 这条路径慢慢前进。1212SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v3、JUnit框架 import junint.framework.*; public class Testsimple extends TestCase public TestSimple (String name) super(name); public void testAdd() assertEquals(2,1+1); public void testAdds()assertEquals(2,1+14

9、);assertEquals(4,2+2);assertEquals(-8,-12+4); 1313SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v4、JUnit 测试的组成 一个测试类包含一些测试方法;每个方法包含一个或者多个断言语句;测试类也能调用其它测试类:单独的类、包、甚至 一个完整的系统;可以通过创建test suite来取得 。1414SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v4、JUnit 测试的组成 任何测试类都能包含一个名为suite的静态方法: public static Test suite(); 可以提供suite()方法来返回

10、任何想要的测试集合(没 有siute()方法JUnit会自动运行所有的test方法)。但 是可能需要手工添加特殊的测试,包括其它suite。 1515SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v4、JUnit 测试的组成 import junit.framework.*; public class TestClassOne extends TestCasepublic TestClassOne(String method)super(method); public void testAddition()assertEquals(4,2+2); public void te

11、stSubtraction()assertEquals(0,2-2); 1616SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v4、JUnit 测试的组成 import joint.framework.*; public class TestClassComposite extends TestCasepublic TestClassComposite(String method) super(method); static public Test suite() TestSuite suite =new TestSuite();/Grab everything:suite.

12、addTestSuite(TestClassOne.class);/Use the suite method:suite.addTest(TestClassTow.suite();return suite; 1717SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v4、JUnit 测试的组成 Per-method的Setup和Tear-down 每个测试的运行都应该是互相独立的;从而可以在 任何时候,以任意的顺序运行每个单独的测试。 为此,在每个测试开始之前,都需要重新设置某些 测试环境,或者在测试完成之后,需要释放一些资 源。 JUnit的TestCase基类提供两个方法供改

13、写,分别用于 环境的建立和清理: protected void setup(); protected void teardown(); 1818SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v4、JUnit 测试的组成 Per-method的Setup和Tear-down 假设对于每个测试,都需要某种数据库连接。这时 只须在setup和teardown方法中分别建立和释放连接: public class Test DB extends TestCaseprivate connection dbConn;protected void setup()dbConn =new Con

14、nection(“oracle”,1521,“fred”,”foobar”);dbConn.connect(); protected void teardown()dbConn.disconnect();dbConn=null; public void testAccountAccess() /Uses dbConnxxx xxx xxxxxx xxx xxxxxxxxx;xx xxx xxx xxxx x xx xxxx; public void testEmployeeAccess() /Uses ddbConnxxx xxx xxxxxx xxx xxxxxxxxx;xxxx x x x

15、x xxx xx xxxx; 1919SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v4、JUnit 测试的组成 Per-suite SetUp和Tear-down 在某些情况下,须为整个test suite设置一些环境,以 及在test-suite中的所有方法都执行完成后做一些清理 工作。要达到这种效果,需要per-suite setup和per- suite tear-down。 Per-suite 的setup要复杂些。需要提供所需测试的一 个suite( 无论通过什么样的方法 )并且把它包装进 一个TestSetup对象。 2020SWPU计算机工程系计算机工程系8.2 使用JUnit编写测试 v4、JUnit 测试的组成 Per-suite SetUp和Tear-down import junit.framework.*; import junit.extensions.*; public class TestClassTow extends TestCaseprivate static TSP tsp;public TestClassTow (String method) super(method); /This one takes a few hours public void testLongRunner() assertEqu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号