- 浏览: 1989341 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
注:转自JavaEye中zhouwendong006的博客http://zhouwendong006.iteye.com/blog/372795 1. 建立一个工程,取名随意。 2. 建立包(com.test.junit3),并建立一个计算类(Calculator),添加其相应的方法。完成后代码如下: Java代码 public class Calculator { public int add(int a, int b) { return a + b; } public int minus(int a, int b) { return a - b; } public int multiply(int a, int b) { return a * b; } public int divide(int a, int b) throws Exception { if (0 == b) { throw new Exception("除数不能为0!"); } return a / b; } } public class Calculator { public int add(int a, int b) { return a + b; } public int minus(int a, int b) { return a - b; } public int multiply(int a, int b) { return a * b; } public int divide(int a, int b) throws Exception { if (0 == b) { throw new Exception("除数不能为0!"); } return a / b; } }这里面的方法比较简单,不在解释。 3. 建立测试类。 a. 建立测试类的时候(我指的是使用Eclipse或者MyEclipse进行开发的时候),一般将测试类放到另外一个源文件夹中。在项目上点右键,选择new-->Source Folder。名字随意,一般取名字test。 b. 建立测试包。包名一般与需要被测试的类的包名相同,在这里,包名与Calculator类的包名相同(com.test.junit3)。 c. 建立测试类。测试类命名一般是需要被测试的类名加上后缀“Test”,这里为CalculatorTest。 4. 测试类需要注意的方面。在这里,也就是CalculatorTest需要遵守的规则。 a. 测试类必须继承TestCase类。 b. 测试方法必须为public型的,void的,没有方法参数,且方法名必须以“test”为前缀,即以test开头(如果不以test开头,那该方法需要手动启动测试。运行测试类的时候,该方法是无法被自动进行测试的)。 5. 实际的测试类。 Java代码 package com.test.junit3; import junit.framework.Assert; import junit.framework.TestCase; public class CalculatorTest extends TestCase{ private Calculator cal; /** * 执行每一个测试方法的时候,先执行setUp(); */ protected void setUp() throws Exception { cal=new Calculator(); } /** * 执行每一个测试方法之后,执行tearDown(); */ protected void tearDown() throws Exception { super.tearDown(); } public void testAdd(){ int result=cal.add(1, 2); //断言:assert Assert.assertEquals(3, result); } public void testMinus(){ int result =cal.minus(1, 2); Assert.assertEquals(-1, result); } public void testMultiply(){ int result =cal.multiply(2, 3); Assert.assertEquals(6, result); } public void testDivied(){ int result=0; try { result = cal.divide(6, 4); } catch (Exception e) { e.printStackTrace(); Assert.fail(); } Assert.assertEquals(1, result); } public void testDivied2(){ Throwable tx=null; try { cal.divide(4, 0); Assert.fail(); } catch (Exception e) { tx=e; } //断言tx是否为空 Assert.assertNotNull(tx); //断言两个对象是否相同 Assert.assertEquals(Exception.class,tx.getClass()); //断言String是否相同 Assert.assertEquals("除数不能为0!", tx.getMessage()); } } package com.test.junit3; import junit.framework.Assert; import junit.framework.TestCase; public class CalculatorTest extends TestCase{ private Calculator cal; /** * 执行每一个测试方法的时候,先执行setUp(); */ protected void setUp() throws Exception { cal=new Calculator(); } /** * 执行每一个测试方法之后,执行tearDown(); */ protected void tearDown() throws Exception { super.tearDown(); } public void testAdd(){ int result=cal.add(1, 2); //断言:assert Assert.assertEquals(3, result); } public void testMinus(){ int result =cal.minus(1, 2); Assert.assertEquals(-1, result); } public void testMultiply(){ int result =cal.multiply(2, 3); Assert.assertEquals(6, result); } public void testDivied(){ int result=0; try { result = cal.divide(6, 4); } catch (Exception e) { e.printStackTrace(); Assert.fail(); } Assert.assertEquals(1, result); } public void testDivied2(){ Throwable tx=null; try { cal.divide(4, 0); Assert.fail(); } catch (Exception e) { tx=e; } //断言tx是否为空 Assert.assertNotNull(tx); //断言两个对象是否相同 Assert.assertEquals(Exception.class,tx.getClass()); //断言String是否相同 Assert.assertEquals("除数不能为0!", tx.getMessage()); } } a. 如果被测试的方法绝对不会有异常抛出(如:Calculator中的add(int a,int b)),那么在测试类(CalculatorTest)中可以像下面的代码一样,直接使用断言Assert类中的assertEquals(int expected, int actual)方法直接断言。该方法传入两个int参数,一个表示期望值,即按照设计应该得到的结果expected,一个表示实际值,即程序实际得到的结果actual。如果这两个结果相同,则表示被测试的类即(Calculator)中的该方法没有错误。 Java代码 public void testAdd(){ int result=cal.add(1, 2); //断言:assert Assert.assertEquals(3, result); } public void testAdd(){ int result=cal.add(1, 2); //断言:assert Assert.assertEquals(3, result); } 补充:Assert中的assertEquals()方法传入的参数基本可以是所有的类型,包括String、int、char等等,具体的自己看。注意:预期值和实际值的类型必须一致。 b. 如果被测试的方法有异常抛出(如:Calculator中的divied(int a,int b)),那么在测试类中如果直接使用断言Assert中的assertEquals(int expected, int actual)方法时,传入参数b为0的时候,如下: Java代码 public void testDivied(){ int result=0; try { result = cal.divide(6, 0); } catch (Exception e) { e.printStackTrace(); Assert.fail(); } Assert.assertEquals(1, result); } public void testDivied(){ int result=0; try { result = cal.divide(6, 0); } catch (Exception e) { e.printStackTrace(); Assert.fail(); } Assert.assertEquals(1, result); } 无论你的代码是否完善,是否已经正确无误了,TestBar显示仍为红条,表示该方法无法通过测试。正确的写法应该如下: Java代码 public void testDivied2(){ //Throwable为Exception和Error的父类. Throwable tx=null; try { cal.divide(4, 0); Assert.fail(); } catch (Exception e) { tx=e; } //断言tx是否为空 Assert.assertNotNull(tx); //断言两个对象是否相同 Assert.assertEquals(Exception.class,tx.getClass()); //断言异常信息是否为指定异常信息。tx.getMessage()获取异常抛出的信息 Assert.assertEquals("除数不能为0!", tx.getMessage()); } public void testDivied2(){ //Throwable为Exception和Error的父类. Throwable tx=null; try { cal.divide(4, 0); Assert.fail(); } catch (Exception e) { tx=e; } //断言tx是否为空 Assert.assertNotNull(tx); //断言两个对象是否相同 Assert.assertEquals(Exception.class,tx.getClass()); //断言异常信息是否为指定异常信息。tx.getMessage()获取异常抛出的信息 Assert.assertEquals("除数不能为0!", tx.getMessage()); } “Assert.fail;”表示该方法测试失败,它的目的是:假如它被执行到了,那么表示divide(int a,int b)方法没有抛出异常,也就是方法中有bug。 “tx=e;”将异常e赋给tx,将局部变量赋给全局变量,以便进行下面操作。 “Assert.assertNotNull(tx);”断言tx是否为空,如果tx为空,则说明divide(int a,int b)方法没有将异常抛出,方法中存在bug。 “Assert.assertEquals(Exception.class,tx.getClass());”。tx.getClass()可以得到tx,也就是这个异常是哪个类,然后断言是否与你期望的异常类相同。如果不同,测试失败,方法抛出异常错误,方法中存在bug。其实到这里可以结束了,而“Assert.assertEquals("除数不能为0!",tx.getMessage());”是为了通过断言异常信息,更进一步判断该异常是否是你在方法中指定的异常。 这样,通过这些断言,可以保证你的方法目前没有发现bug存在,测试的时候,该方法会通过,表现方式为TestBar为绿色通过。 6. 在测试的时候,再TestCase中有两个方法,一个为setUp(),表示初始化。该方法在每个测试方法执行之前将被首先执行。比如如果要执行testAdd()方法的时候,先要执行一遍setUp()方法。因此该方法一般进行一些初始化操作,比如对被测试类的实例化,如: Java代码 protected void setUp() throws Exception { cal=new Calculator(); } protected void setUp() throws Exception { cal=new Calculator(); } 另一个方法为tearDown(),该方法在每个测试方法执行之后执行,因此该方法一般处理每个测试方法结束后的资源释放操作。 总的来说:如果测试类中有3个测试方法test1(),test2(),test3(),那么方法的执行顺序为 setUp()->test1()->tearDown()->setUp()->test2()->tearDown()->setUp()->test3()->tearDown() 7. 测试的时候,一般要注意临界值的测试。如除数不能为0,索引越界等问题。 8. 如果在没有IDE的情况下,可以通过使用TestRunner类进行测试,如以下代码所示 Java代码 public static void main(String[] args) { junit.awtui.TestRunner.run(CalculatorTest.class); } public static void main(String[] args) { junit.awtui.TestRunner.run(CalculatorTest.class); } 需要注意的是:在junit.awtui、junit.swingui和junit.textui三个包下均有TestRunner类,任何一个类都可以执行测试任务。只是表现的方式不同,看你喜欢用哪个了! 9. 在执行多个测试类的时候,一个一个点运行,进行测试显然是非常费时的事情。junit提供了一个类TestSuite可以将多个测试类一起运行,进行测试。示例代码如下: Java代码 package com.test.junit3; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestAll extends TestCase { /** * 该方法名称必须为suite(),不能更改 * 该方法中 * TestSuite对象不仅可以添加测试类,还可以包装suite对象 * @return */ public static Test suite(){ TestSuite suite=new TestSuite(); suite.addTestSuite(LargestTest.class); suite.addTestSuite(CalculatorTest.class); return suite; } } package com.test.junit3; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestAll extends TestCase { /** * 该方法名称必须为suite(),不能更改 * 该方法中 * TestSuite对象不仅可以添加测试类,还可以包装suite对象 * @return */ public static Test suite(){ TestSuite suite=new TestSuite(); suite.addTestSuite(LargestTest.class); suite.addTestSuite(CalculatorTest.class); return suite; } } 如注释所示,该静态方法名称必须为suite(),原因可以参看junit源代码。另外该方法返回Test对象。TestSuite中有两个方法很重要,一个是addTestSuite(),可以直接添加测试类。另一个方法为addTest(),可以添加TestSuite对象,所以,上面也可以通过下面的代码实现: Java代码 package com.test.junit3; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestAll extends TestCase { public static Test suite(){ TestSuite suite=new TestSuite(); TestSuite suite1=new TestSuite(); suite1.addTestSuite(LargestTest.class); TestSuite suite2=new TestSuite(); suite2.addTestSuite(CalculatorTest.class); suite.addTest(suite1); suite.addTest(suite2); return suite; } } package com.test.junit3; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestAll extends TestCase { public static Test suite(){ TestSuite suite=new TestSuite(); TestSuite suite1=new TestSuite(); suite1.addTestSuite(LargestTest.class); TestSuite suite2=new TestSuite(); suite2.addTestSuite(CalculatorTest.class); suite.addTest(suite1); suite.addTest(suite2); return suite; } } 这样我们可以方便的对多个测试类进行测试了。
发表评论
-
解决Java服务器端插入数据到Mysql中乱码问题--简单几步轻松解决乱码问题
2015-11-13 17:52 2414当写入数据到mysql数据库中发生乱码时.请检查以下几个地 ... -
设计模式之-代理模式-Proxy
2015-04-28 21:24 868使用代理模式之前需要知道代理模式能做什么? 能有哪些好处以及 ... -
构建高并发、服务化、低耦合企业级脚骨:springmvc+mybatis+restfull+webservice+bootstrap html5
2015-04-14 01:17 85SpringMVC + Mybatis + SpringS ... -
教您搭建大型互联网企业架构:springmvc+mybatis+restful+webservice+quartz+bootstrap
2015-04-13 21:54 99SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restful+webservice+quartz+bootstrap html5
2015-04-13 21:49 81SpringMVC + Mybatis + SpringSe ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:36 22SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:33 83SpringMVC + Mybatis + SpringS ... -
Maven构建大型互联网架构springmvc+mybatis+Restfull+Webservice+Bootstrap
2015-04-12 23:28 71SpringMVC + Mybatis + SpringS ... -
maven构建高大上开源架构:springmvc+mybatis+rest+bootstrap html5
2015-04-12 23:25 23SpringMVC + Mybatis + SpringS ... -
手机App后台架构:Springmvc+SpringSecurity+mybatis+Rest+Quartz+Bootstrap Html5( Maven构建)
2015-04-09 01:39 76APP后台架构Maven构建,模拟大型互联网架构,支持高并发 ... -
maven构建springmvc+mybatis+rest+webservice+bootstrap html5(cms开源项目)
2015-04-09 01:21 85SpringMVC + Mybatis + SpringS ... -
Java正则表达式
2014-11-26 21:03 1220Java正则表达式: package pack.ja ... -
Cannot convert value of type [org.springframework.cache.ehcache.EhCacheCache
2014-11-10 20:03 6247错误信息: [org.springframework.be ... -
Collections工具类中的frequency方法统计单词出现的次数
2013-11-05 21:30 2812最近发现了一个Collections中有一个很好用的方法: ... -
Java 压缩Excel文件生成.zip文件
2013-05-08 22:22 7950首先创建文件目录,然后生成Excel文件到创建的目录下, ... -
Java 解压缩zip文件
2013-05-08 13:14 8351不借助于其他的第三方 ... -
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度
2013-04-06 22:26 57704最近项目中需要用到导出Excel文件,以下是我写了一个通过j ... -
java获取字节的长度.
2012-05-17 22:00 6744我们经常要获取中文,数字,或者英文字符所占字节的长度,下面就列 ... -
StringBuffer-reverse()字符反转功能
2012-05-17 21:42 7093在书上看到一个这样的例子, 采用最简便的方式把一串字符串反转过 ... -
java 打开IE
2012-05-23 22:14 1298Runtime.getRuntime().exec(" ...
相关推荐
【标题】:“浪曦][原创]Junit.3.8.详解续二.rar”这个压缩包文件,显然是关于Junit 3.8版本的一个详细教程的第二部分。Junit是Java编程语言中广泛使用的单元测试框架,对于软件开发,尤其是进行TDD(测试驱动开发)...
首先,`junit3.8.jar`是Junit 3.8的核心库文件,包含了运行和编写单元测试所需的所有类和方法。导入此库后,开发者可以在项目中创建和执行单元测试,确保代码的正确性。Junit 3.8相较于早期版本,增加了一些实用特性...
【标题】:“浪曦][原创]Junit.3.8.详解续一.rar”这个标题表明,这是一个关于Junit 3.8版本的详细解析资料的压缩文件,由“浪曦”进行原创编写,并且是该系列教程的一部分,可能是前一个教程的延续。 【描述】:...
JUnit3.8是Java开发中一个非常重要的单元测试框架,它是JUnit系列的早期版本,用于帮助程序员编写可重复运行的测试代码,确保软件的质量。在本文中,我们将深入探讨JUnit3.8的基础知识,了解其核心概念、用法以及...
JUnit3.8是Java编程语言中广泛使用的单元测试框架的第三个主要版本,它为开发者提供了一种方便的方式来编写和执行可重复的、自动化的单元测试。这个版本在JUnit的早期版本基础上进行了改进,增强了测试的功能性和...
JAVA测试-----Junit.3.8.part3
JAVA测试------Junit.3.8.part1
JAVA测试----------Junit.3.8.part2
JUnit是Java编程语言中最常用的...总的来说,掌握JUnit 3.8不仅有助于理解单元测试的基本原理,也是提升软件质量的重要工具。无论是在J2EE环境下还是其他Java项目中,熟悉并能熟练使用JUnit都是每个开发者必备的技能。
JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这里我们将深入探讨JUnit 3.8和JUnit 4两个版本的主要API及其差异。 **JUnit 3.8 API** JUnit 3.8是JUnit的...
Junit3.8 API CHM Junit3.8 API CHM Junit3.8 API CHM Junit3.8 API CHM Junit3.8 API CHM
【JUNIT3.8學習筆記(1)】 JUnit 是一个广泛使用的Java编程语言的单元测试框架,主要用于帮助开发者编写和执行针对代码功能的...通过熟练掌握JUnit3.8,开发者可以有效地进行单元测试,提高代码的可靠性和可维护性。
- **创建测试类**:继承`junit.framework.TestCase`,为每个要测试的方法编写对应的测试方法。 - **运行测试**:使用JVM通过命令行或IDE(如Eclipse, IntelliJ IDEA)运行测试类,JUnit会自动发现并执行所有测试...
JUnit是Java编程语言中最常用的单元测试框架之一,它在软件开发过程中起着至关重要的作用,帮助开发者确保代码的质量和稳定性。`junit-3.8.1.jar` 是JUnit的一个早期版本,发布于2004年,适用于Java 1.3及更高版本。...
JUnit是Java编程语言中最常用的单元测试框架之一,它使得开发者能够编写可自动化执行的测试用例,以确保代码的质量和功能正确性。本资源包含了JUnit的两个主要版本——4.4和3.8.1的源码和帮助文档,这对于学习和理解...
二、Junit3.8中的断言和Assert类 在Junit 3.8版本中,`Assert`类提供了多种方法来进行断言检查: 1. **Assert.assertEquals()**:比较两个对象或值是否相等。在本实验中,如`Assert.assertEquals(3, result)`,...
JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这个“Junit学习.rar”压缩包显然包含了关于JUnit从3.8到4.9版本的学习资料,包括可能的操作手册、教程文档...
JUnit是由Erich Gamma和Kent Beck创建的Java单元测试框架。 junit/junit/3.8/junit-3.8.pom