- 浏览: 1100241 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
一、介绍
JUnit4 基本上是一个新框架,而不是旧框架的升级版本。其主要目标便是利用Java 5的Annotation特性简化测试用例的编写。要求:JDK 5.0或以上版本。
二、用法
1、Junit3中,Junit依赖反射来执行每个以test开头的方法,但是Junit4中,有了Annotation的,我们的测试方法就不需要再以testXXX来标识了,而是写上一个@Test标注即可。如:
说明:
(1)、测试方法必须使用注解 org.junit.Test 修饰。
(2)、测试方法必须使用 public void 修饰,而且不能带有任何参数。
2、测试类也不必继承自TestCase了。可能会想,不继承TestCase,我们就无法使用断言,即无法调用assertXxx()方法了。所以,在Junit4中,所有的断言的方法全部都以静态方法的形式放入到了Assert类中,使用Assert.assertXxx()来调用,如果使用import static静态导入Assert,那么与Junit3中使用断言是一样的。
3、Junit3中,setUp()和tearDown()方法分别是准备测试环境和释放资源,在Junit4中,这二个方法依赖于@Before和@After标记,好处是如果我们忘记了在这二个方法中调用父类的同名方法,Junit框架会自动处理使用@Before和@After标记的方法。,@Before表示每个测试方法执行前执行一次,而@BeforeClass表示整个类测试前执行一次。
4、不再强迫必须使用setUp()和tearDown()作为方法名,可以使用更有意义的方法名。如:init()和close(),前提是它们被标注了@Before和@After标记。
5、对测试异常,JUnit 4可以用expected=Exception.class来期待一个预期的异常,而不必手动编写。参数 expected 代表测试方法期望抛出指定的异常,如果运行测试并没有抛出这个异常,则 JUnit4 会认为这个测试没有通过。如:
可能会抛出除数为0的异常,可以这样来编写:
6、设置最长执行时间
参数timeout,指定被测试方法被允许运行的最长时间应该是多少,如果测试方法运行时间超过了指定的毫秒数,则JUnit认为测试失败。
7、Ignore 用于暂时忽略某个测试方法,因为有时候由于测试环境受限,并不能保证每一个测试方法都能正确运行。
8、类级别的Fixture设置方法
注解@BeforeClass修饰用于初始化Fixture的方法。注解@AfterClass 修饰用于注销Fixture的方法。由于这二个方法在运行其间仅执行一次,因此它们只能标记为静态方法(使用 public static void 修饰,而且不能带有任何参数),其实在所有的测试方法中共享的资源也必须是静态引用。如:
类级别的Fixture方法,仅会在测试类中所有测试方法执行之前执行初始化,并在全部测试方法测试完毕之后执行注销方法。
9、测试运行机
JUnit 中所有的测试方法都是由它负责执行的。JUnit 为单元测试提供了默认的测试运行器,但 JUnit 并没有限制您必须使用默认的运行器。相反,您不仅可以定制自己的运行器(所有的运行器都继承自 org.junit.runner.Runner),而且还可以为每一个测试类指定使用某个具体的运行器。指定方法也很简单,使用注解 org.junit.runner.RunWith 在测试类上显式的声明要使用的运行器即可:
10、测试套件
JUnit 提供了一种批量运行测试类的方法,叫做测试套件。这样,每次需要验证系统功能正确性时,只执行一个或几个测试套件便可以了。测试套件的写法非常简单,需要遵循以下规则:
(1)创建一个空类作为测试套件的入口。
(2)使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。
(3)将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。
(4)将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数。
(5)保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数。
测试套件中不仅可以包含基本的测试类,而且可以包含其它的测试套件,这样可以很方便的分层管理不同模块的单元测试代码。但是,您一定要保证 测试套件之间没有循环包含关系。
11、参数化测试
(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
(2)为测试类声明几个变量,分别用于存放期望值和测试所用数据。
(3)为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
(4)为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
(5)编写测试方法,使用定义的变量作为参数进行测试。
JUnit4 基本上是一个新框架,而不是旧框架的升级版本。其主要目标便是利用Java 5的Annotation特性简化测试用例的编写。要求:JDK 5.0或以上版本。
二、用法
1、Junit3中,Junit依赖反射来执行每个以test开头的方法,但是Junit4中,有了Annotation的,我们的测试方法就不需要再以testXXX来标识了,而是写上一个@Test标注即可。如:
@Test public static void method() {}
说明:
(1)、测试方法必须使用注解 org.junit.Test 修饰。
(2)、测试方法必须使用 public void 修饰,而且不能带有任何参数。
2、测试类也不必继承自TestCase了。可能会想,不继承TestCase,我们就无法使用断言,即无法调用assertXxx()方法了。所以,在Junit4中,所有的断言的方法全部都以静态方法的形式放入到了Assert类中,使用Assert.assertXxx()来调用,如果使用import static静态导入Assert,那么与Junit3中使用断言是一样的。
3、Junit3中,setUp()和tearDown()方法分别是准备测试环境和释放资源,在Junit4中,这二个方法依赖于@Before和@After标记,好处是如果我们忘记了在这二个方法中调用父类的同名方法,Junit框架会自动处理使用@Before和@After标记的方法。,@Before表示每个测试方法执行前执行一次,而@BeforeClass表示整个类测试前执行一次。
4、不再强迫必须使用setUp()和tearDown()作为方法名,可以使用更有意义的方法名。如:init()和close(),前提是它们被标注了@Before和@After标记。
5、对测试异常,JUnit 4可以用expected=Exception.class来期待一个预期的异常,而不必手动编写。参数 expected 代表测试方法期望抛出指定的异常,如果运行测试并没有抛出这个异常,则 JUnit4 会认为这个测试没有通过。如:
public int div(int a,int b){ return a / b; }
可能会抛出除数为0的异常,可以这样来编写:
@Test(expected=ArithmeticException.class) public void testDiv(){ cal.div(5, 0); }
@Test(expected = NullPointerException.class) public void unsupportedDBCheck() { throw new NullPointerException(); }
6、设置最长执行时间
参数timeout,指定被测试方法被允许运行的最长时间应该是多少,如果测试方法运行时间超过了指定的毫秒数,则JUnit认为测试失败。
@Test(timeout=1) public void testMinus(){ assertEquals(cal.minus(2, 1), 1); }
7、Ignore 用于暂时忽略某个测试方法,因为有时候由于测试环境受限,并不能保证每一个测试方法都能正确运行。
@Ignore("db is down") @Test(expected=UnsupportedDBVersionException.class) public void unsupportedDBCheck(){ }
8、类级别的Fixture设置方法
注解@BeforeClass修饰用于初始化Fixture的方法。注解@AfterClass 修饰用于注销Fixture的方法。由于这二个方法在运行其间仅执行一次,因此它们只能标记为静态方法(使用 public static void 修饰,而且不能带有任何参数),其实在所有的测试方法中共享的资源也必须是静态引用。如:
//类级别Fixture初始化方法 @BeforeClass public static void dbInit(){ } //类级别Fixture注销方法 @AfterClass public static void dbClose(){ }
类级别的Fixture方法,仅会在测试类中所有测试方法执行之前执行初始化,并在全部测试方法测试完毕之后执行注销方法。
9、测试运行机
JUnit 中所有的测试方法都是由它负责执行的。JUnit 为单元测试提供了默认的测试运行器,但 JUnit 并没有限制您必须使用默认的运行器。相反,您不仅可以定制自己的运行器(所有的运行器都继承自 org.junit.runner.Runner),而且还可以为每一个测试类指定使用某个具体的运行器。指定方法也很简单,使用注解 org.junit.runner.RunWith 在测试类上显式的声明要使用的运行器即可:
@RunWith(CustomTestRunner.class) public class TestWordDealUtil{ }
10、测试套件
JUnit 提供了一种批量运行测试类的方法,叫做测试套件。这样,每次需要验证系统功能正确性时,只执行一个或几个测试套件便可以了。测试套件的写法非常简单,需要遵循以下规则:
(1)创建一个空类作为测试套件的入口。
(2)使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。
(3)将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。
(4)将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数。
(5)保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数。
import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({TestWordDealUtil.class,xxx.class}) public class RunAllUtilTestsSuite { }
测试套件中不仅可以包含基本的测试类,而且可以包含其它的测试套件,这样可以很方便的分层管理不同模块的单元测试代码。但是,您一定要保证 测试套件之间没有循环包含关系。
11、参数化测试
(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
(2)为测试类声明几个变量,分别用于存放期望值和测试所用数据。
(3)为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
(4)为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
(5)编写测试方法,使用定义的变量作为参数进行测试。
@RunWith(Parameterized.class) public class TestWordDealUtilWithParam { private String expected; private String target; @Parameters public static Collection words(){ return Arrays.asList(new Object[][]{ {"employee_info", "employeeInfo"}, //测试一般的处理情况 {null, null}, //测试 null 时的处理情况 {"", ""}, //测试空字符串时的处理情况 {"employee_info", "EmployeeInfo"}, //测试当首字母大写时的情况 {"employee_info_a", "employeeInfoA"}, //测试当尾字母为大写时的情况 {"employee_a_info", "employeeAInfo"} //测试多个相连字母大写时的情况 }); } /** * 参数化测试必须的构造函数 * @param expected 期望的测试结果,对应参数集中的第一个参数 * @param target 测试数据,对应参数集中的第二个参数 */ public TestWordDealUtilWithParam(String expected , String target){ this.expected = expected; this.target = target; } /** * 测试将 Java 对象名称到数据库名称的转换 */ @Test public void wordFormat4DB(){ assertEquals(expected, WordDealUtil.wordFormat4DB(target)); } }
- junit-4.8.1.jar (231.5 KB)
- 下载次数: 33
发表评论
-
使用zxing.jar生成二维码
2015-10-15 13:52 01、ZxingCodeUtils /** * 使用Zx ... -
Java生成条形码与二维码
2015-09-29 11:02 0一、一维条形码 /** * 利用jbarcode.ja ... -
将html特殊码( &#x)转换成字符
2015-06-09 11:54 0public static void main(St ... -
unicode码的分布情况
2014-06-25 16:33 0******************************* ... -
使用servicemix实现FTP连接池
2013-06-13 13:17 0一、配置文件 <?xml version=" ... -
嵌入式运行HttpServer
2015-06-30 13:14 1759一、嵌入式运行Jetty并提供上传文件功能 1、定义处理请求的 ... -
Windows命令与BAT脚本示例整理
2013-05-30 16:50 0一、将后缀后为".txt-"的文件全部重命 ... -
使用Quartz执行定时任务
2012-05-24 11:00 0一、在application中运用 (1)定义任务 pac ... -
java访问FtpSever
2011-10-09 15:18 0使用apache common-net包来实现。 ... -
有关Hibernate Tools的使用
2010-12-24 15:20 0<一>、生成实体(Entiry)时,自定义反向生成 ... -
使用iText-2.1.7生成PDF
2010-11-25 21:30 0public class PDFUtil { /* ... -
使用iText-2.1.7生成word
2010-11-25 21:17 0public class RTFUtil { pu ... -
FusionCharts参数说明
2010-04-08 12:51 0功能特性 animation ... -
使用ant.jar进行文件zip压缩
2010-02-02 11:40 12506import java.io.BufferedInputS ... -
使用struts2中的codebehind插件
2010-01-11 13:10 0codebehind plugin是一个可以简化struts2 ... -
Eclipse JPA Plugin
2010-01-04 14:21 8872一、Hibernate Tools Hibernate ... -
关于Apache Mina
2009-11-18 10:13 7527一、介绍 MINA(Multipurpose Infr ... -
json-lib使用
2009-09-16 09:17 15305一、资源链接: http://json-lib.sourcef ... -
apache commons DbUtils
2009-07-22 20:58 9581一、关于DbUtils comm ... -
ant 使用
2009-07-16 14:58 0一、安装与配置 下载地址:http://ant.ap ...
相关推荐
jUnit4 在 Eclipse 中的使用教程 jUnit4 是 JUnit 框架有史以来的最大改进,其主要目标便是利用 Java5 的 Annotation 特性简化测试用例的编写。 Annotation 是一种元数据,描述数据的数据。在 Java 里面可以用来和 ...
据您提供的信息,这篇教程将介绍如何在Eclipse中使用JUnit4进行单体测试。JUnit4是JUnit框架的一个重大改进,特别是在Java5引入注解功能之后。注解(Annotation)在Java中是一种元数据,用于提供额外的信息来描述类...
在Eclipse中使用JUnit4进行单元测试是一种常见的Java开发实践,它可以帮助开发者确保代码的正确性和稳定性。单元测试是软件开发中的重要环节,通过编写针对代码各个独立模块的测试用例,可以验证代码功能是否按预期...
在Eclipse中使用JUnit4进行单元测试是一种常见的开发实践,它可以帮助程序员确保代码的质量和可靠性。JUnit4是Java编程语言中最流行的单元测试框架之一,它提供了丰富的注解、断言和测试工具,使得测试过程更加简洁...
JUnit4测试框架是Java开发中广泛使用的单元测试工具,它为开发者提供了编写和运行可重复、可靠的测试用例的能力。这个“junit4测试jar包”包含了一切你需要在项目中集成JUnit4进行测试的库文件。只需将其复制到你的...
JUnit4是Java编程语言中广泛使用的单元测试框架,它是Java开发者进行软件质量保证的重要工具。本教程将深入浅出地介绍JUnit4的基本概念、核心特性以及如何在实际项目中应用它来编写有效的单元测试。 ## 一、JUnit4...
下面是一个使用 JUnit4 编写的测试类示例: ```java import org.junit.*; public class AddOperationTest { @Before public void setUp() throws Exception { // 初始化代码 } @After public void ...
使用 JUnit4 可以简化测试用例的编写,使得测试用例更加灵活和简洁。同时,JUnit4 也提供了更多的元数据来描述测试方法的行为,从而使得测试用例更加灵活和可靠。 五、JUnit4 的应用场景 JUnit4 可以应用于各种 ...
JUnit4使用Hamcrest断言机制,提供了多种断言方式,例如: * `assertThat(n, allOf(greaterThan(1), lessThan(15)))`:断言n大于1小于15 * `assertThat(str, is("bjsxt"))`:断言str等于“bjsxt” * `assertThat(d,...
【标题】"junit4 单元测试源码"涉及的是Java编程中单元测试的重要工具JUnit4的使用,这是对代码进行验证和调试的关键部分。JUnit4是JUnit框架的一个版本,它提供了更灵活的注解、测试套件管理和断言方式,使得编写...
本文将深入探讨JUnit4的核心特性、使用方法以及如何将其应用到实际项目中。 首先,我们要明白单元测试的重要性。在软件开发过程中,单元测试是确保代码质量的第一道防线,它能够帮助开发者尽早发现和修复问题,提高...
JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了强大的测试工具,能够帮助他们编写可重复运行的、可靠的单元测试。在Java项目中,为了使用JUnit4进行测试,我们需要引入相应的jar包。这里...
Junit4教程 Junit4是JUnit框架有史以来的最大改进,其中的主要目标便是利用Java5的...在Eclipse中使用JUnit4也非常方便,我们可以使用JUnit4的Annotation来描述测试方法,并使用Eclipse的JUnit插件来运行测试。