- 浏览: 183329 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
delu577025500:
f — 表示返回数据列,如“snd1l1yr”。更详细的参见附 ...
连接雅虎财经API获取股票信息 -
kizz:
您好,请问如何计算压缩的时间。
利用ant.jar进行解压缩 -
yangxiutian:
想查查新版的struts2的工作原理 网上全是旧版的
struts2 StrutsPrepareAndExecuteFilter 源码分析 -
695165987:
KM文件夹 怎么下载上面的文件夹啊,一个个的下载很累啊~大哥知 ...
sap portal KM 文件夹布局配置 -
nurenok:
postInit(dispatcher, filterCo ...
struts2 StrutsPrepareAndExecuteFilter 源码分析
Junit4最大的亮点就是引入了注解(annotation),通过解析注解就可以为测试提供相应的信息,抛弃junit3使用命名约束以及反射机制的方法。
/**
* 被测试类
*/
package com.stock.finance.service;
import java.util.List;
import java.util.zip.DataFormatException;
import com.stock.finance.db.dao.TableCompanyDAO;
import com.stock.finance.db.model.TableCompany;
/**
*
*/
public class CompanyService {
private TableCompanyDAO dao = new TableCompanyDAO();
public CompanyService(){
}
/**
* @param code
* @param name
* @param masterBusiness
*/
public void insert(String code,String name,String masterBusiness){
TableCompany company = new TableCompany(code, name);
company.setMasterBusiness(masterBusiness);
insert(company);
}
/**
* @param company
*/
public void insert(TableCompany company){
dao.save(company);
}
/**
* @return
*/
public int companyNum(){
List<?> list = dao.findAll();
return list.size();
}
public void justForDisplay() throws DataFormatException{
throw new DataFormatException();
}
}
/**
* junit3测试类
*/
package test.com.stock.finance.service;
import java.util.zip.DataFormatException;
import com.stock.finance.service.CompanyService;
import junit.framework.TestCase;
/**
*/
public class Tester3 extends TestCase {
private CompanyService service = new CompanyService();
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public final void testInsertStringStringString() {
fail("Not yet implemented"); // TODO
}
public final void testInsertTableCompany() {
fail("Not yet implemented"); // TODO
}
public final void testCompanyNum() {
fail("Not yet implemented"); // TODO
}
public final void testJustForDisplay() {
try {
service.justForDisplay();
} catch (DataFormatException e) {
assertTrue("捕获异常正确", true);
}
}
}
/**
* junit4测试类
*/
package test.com.stock.finance.service;
//静态引用
import static org.junit.Assert.*;
import java.util.zip.DataFormatException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import com.stock.finance.service.CompanyService;
/**
*
*/
public class Tester4 {
private CompanyService service = new CompanyService();
/**
* @throws java.lang.Exception
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
/**
* @throws java.lang.Exception
*/
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
}
/**
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception {
}
@Test
@Ignore
public final void testInsertStringStringString() {
// fail("Not yet implemented"); // TODO
}
@Test(timeout = 1000)
public final void testInsertTableCompany() {
// fail("Not yet implemented"); // TODO
}
@Test
public final void testCompanyNum() {
fail("Not yet implemented"); // TODO
}
@Test(expected = DataFormatException.class)
public final void testJustForDisplay() throws DataFormatException {
service.justForDisplay();
}
}
junit3和junit4的使用区别如下
1.在JUnit3中需要继承TestCase类,但在JUnit4中已经不需要继承TestCase
2.在JUnit3中需要覆盖TestCase中的setUp和tearDown方法,其中setUp方法会在测试执行前被调用以完成初始化工作,而tearDown方法则在结束测试结果时被调用,用于释放测试使用中的资源,而在JUnit4中,只需要在方法前加上@Before,@After
3.在JUnit3中对某个方法进行测试时,测试方法的命令是固定的,例如对addBook这个方法进行测试,需要编写名字为tetAddBook的测试方法,而在JUnit4中没有方法命令的约束,在方法的前面加上@Test,这就代表这个方法是测试用例中的测试方法
4.新的断言assertThat
5. @BeforeClass 和 @AfterClass 。在JUnit3,如果所有的test case仅调用一次setUp()和tearDown()需要使用TestSetup类
6.测试异常处理@Test(expected = DataFormatException.class)
7.设置超时@Test(timeout = 1000)
8.忽略测试@Ignore
9.集成测试
集成测试
利用TestSuite可以将一个TestCase子类中所有test***()方法包含进来一起运行,还可将TestSuite子类也包含进来,从而行成了一种等级关系。可以把TestSuite视为一个容器,可以盛放TestCase中的test***()方法,它自己也可以嵌套。这种体系架构,非常类似于现实中程序一步步开发一步步集成的现况。
在junit中,Test、TestCase和TestSuite三者组成了composiste pattern。通过组装自己的TestSuite,可以完成对添加到这个TestSuite中的所有的TestCase的调用。而且这些定义的TestSuite还可以组装成更大的TestSuite,这样同时也方便了对于不断增加的TestCase的管理和维护。
它的另一个好处就是,可以从这个TestCase树的任意一个节点(TestSuite或TestCase)开始调用,来完成这个节点以下的所有TestCase的调用。提高了unit test的灵活性。
例如:
### JUnit-3.8.1结构:
import junit.framework.Test;
import junit.framework.TestSuite;
public class TestAll{
//定义一个suite,对于junit的作用可以视为类似于java应用程序的main。
public static Test suite(){
TestSuite suite = new TestSuite("Running all tests.");
suite.addTestSuite( TestCase1.class);
suite.addTestSuite( TestCase2.class);
return suite;
}
}
### JUnit-4.X结构:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ TestCase1.class, TestCase2.class })
public class AllCalculatorTests {
}
//代码示例:在junit3中如何通过执行多个测试方法,却只执行一次setUp,tearDown方法
import junit.framework.*;
import junit.extensions.TestSetup;
public class AllTestsOneTimeSetup {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(SomeTest.suite());
suite.addTest(AnotherTest.suite());
TestSetup wrapper = new TestSetup(suite) {
protected void setUp() {
oneTimeSetUp();
}
protected void tearDown() {
oneTimeTearDown();
}
};
return wrapper;
}
public static void oneTimeSetUp() {
// one-time initialization code
}
public static void oneTimeTearDown() {
// one-time cleanup code
}
}
发表评论
-
DWR 2
2011-06-21 13:05 1082后续: 1. 拦截器 uk.ltd.get ... -
DWR 1
2011-06-21 12:58 921原文:http://www.blogjava.net/Supe ... -
log4j.properties的路径问题
2011-06-20 11:59 5440log4j.properties如果放在web-inif/cl ... -
Class.forName
2011-06-19 19:55 1197Class.forName(xxx.xx.xx) 返回 ... -
myeclipse优化 Maven
2011-06-18 09:11 82111.禁用myeclipse updating indexes ... -
ThreadLocal学习2
2011-06-10 13:15 1165典型实例 Hiberante的HibernateSessio ... -
【转】ThreadLocal学习一
2011-06-10 11:05 1356我们知道Spring通过各种D ... -
java 动态代理 proxy InvocationHandler
2011-06-09 16:27 5393一篇杂文,写到哪就说到哪。在一些框架中有所谓的截面(aop), ... -
httpUrlConnection参数详解
2011-06-02 12:54 13496// 设置是否向httpUrlConnection输出,因为这 ... -
HttpURLConnection使用代理服务器
2011-06-02 11:48 2531目前网络上最流行的协 ... -
连接雅虎财经API获取股票信息
2011-06-02 11:29 24684一直想自己做个简单的股票系统,来记录股票的价格。在网上看了下, ... -
java字符串split方法的诡异
2011-06-01 18:01 975String str = "#123" ... -
eclipse插件
2011-05-30 14:05 812正则表达式插件 http://regex-util.sourc ... -
Hibernate annotation学习笔记1
2011-05-19 17:16 1一系列笔记所使用的数据库表关系图 -
利用ant.jar进行解压缩
2011-05-19 16:22 4131package com.zoucq; import java ... -
JSPWiki的安装
2011-05-19 15:02 2381平时喜欢用word,excel文档保存一些知识点,日子久了就发 ... -
quartz监听器
2011-05-18 15:32 6903Quartz主要包含三个组件job,trigger,sched ... -
junit4新框架hamcrest的assertThat
2011-05-18 13:13 7409assertThat JUnit4.4引入了Hamcrest ... -
quartz日记4-触发器
2011-05-17 17:16 1103SimpleTrigger 如果需要计 ... -
quartz日记3-quartz的基本类
2011-05-17 16:46 688Quartz的几个核心的接口和类为: Job接口:自 ...
相关推荐
#### 三、JUnit4 与 JUnit3 的差异 在 JUnit3 中,编写测试用例时有许多限制,比如测试类必须继承 `junit.framework.TestCase` 类,且测试方法必须以 `test` 开头。这些限制在 JUnit4 中已经被取消,取而代之的是...
JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了强大的工具来编写、组织和执行单元测试。JUnit4引入了许多改进和新特性,极大地提升了测试的灵活性和效率。下面将详细介绍JUnit4的关键概念、...
此外,JUnit4可以与其他库(如Mockito、EasyMock等)结合使用,进行模拟对象和依赖注入,以实现更复杂的测试场景。 总结一下,"junit4 jar包"是Java开发中不可或缺的一部分,它提供了一套完善的单元测试工具和API,...
同时,JUnit4与大多数IDE和构建工具(如Maven、Gradle)良好集成。 在实际开发中,使用JUnit4进行单元测试能够帮助我们确保代码的质量,发现并修复bug,提高软件的稳定性。正确地利用JUnit4提供的功能,可以有效地...
JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了一种方便、高效的方式来验证代码的正确性。这个“junit4 jar完整包”包含了所有你需要进行单元测试的类和接口,使得测试过程变得简单且易于...
**JUnit 3的安装与使用** 1. **添加依赖**:在Java项目中,首先需要将JUnit库添加到项目的类路径中。如果是Maven项目,可以在`pom.xml`文件中添加JUnit 3的依赖: ```xml <groupId>junit <artifactId>junit ...
与JUnit3相比,JUnit4的灵活性和可扩展性得到了显著提升,使得测试驱动开发(TDD)在Java领域变得更加普及。 ## 二、JUnit4的核心组件 ### 1. 测试注解 - `@Test`: 表示一个方法是测试方法,可以包含断言。 - `@...
JUnit可以与其他开发工具集成,如Eclipse、IntelliJ IDEA、Maven等。 JUnit 5的新特性 JUnit 5引入了许多新的特性,如Parameterized Tests、Dynamic Tests、Extensions等。Parameterized Tests允许开发者使用参数化...
与 JUnit 3 中的约定(测试方法需以 "test" 开头)相比,这种方式更加灵活,且更符合面向对象编程的原则。 在 JUnit 4 中,除了基本的断言方法,如 `assertEquals`,还有其他的一些断言方法,例如 `assertTrue`,`...
博主可能还会讨论在Spring 2.x中遇到的挑战,比如JUnit3与Spring的集成,以及如何在没有注解支持的情况下管理测试环境。此外,可能还会提及升级到JUnit4或其他现代测试库的可能性和步骤,因为这在当时是一个常见的...
5. **分类(Categories)**:在JUnit 4中引入,用于组织和筛选测试,但JUnit 3没有这个功能。 **JUnit 4 API** JUnit 4是一个重大的更新,引入了许多新特性和改进,使得测试更加灵活和强大: 1. **测试注解...
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-...JUnit Vintage提供了一个在平台上运行JUnit 3和JUnit 4的TestEngine 。
- **集成到构建工具**:JUnit4与Maven、Gradle等构建工具无缝集成,使得测试成为项目构建的一部分。 6. **学习路径**: - 开始时,可以浏览`javadoc`了解基本API。 - 掌握基本的测试用例编写,学习如何使用注解...
JUnit4 教程详尽 JUnit4 是 JUnit 框架有史以来的最大改进,其主要目标便是利用 Java5 的 Annotation 特性简化测试用例的编写。下面是对 JUnit4 的详细介绍: 一、Annotation 简介 Annotation 是 Java5 中引入的...
JUnit4基础文档 单元测试是软件测试的一种,旨在检验软件的正确性和可靠性。JUnit是一个流行的单元测试框架,广泛应用于Java开发中。本文档介绍了JUnit4的基础知识,包括单元测试的概念、JUnit4的HelloWorld示例、...
总之,这个学习资源将带你深入理解JUnit的基本概念和高级特性,通过阅读`JUnit学习笔记.txt`并动手实践其中的示例,你将能熟练掌握如何利用JUnit3和JUnit4进行有效的单元测试,从而提升代码质量和项目稳定性。
* 向后兼容,可以运行 JUnit3 的测试 * 提供了多种 assert 方法,方便测试结果的检查 * 可以与各种流行工具(如 Ant 和 Maven)集成 * 可以与流行 IDE(如 Eclipse、NetBeans、IntelliJ 和 JBuilder)集成 JUnit ...
10. **Mockito集成**:JUnit4与Mockito库结合,可以很方便地进行依赖注入的模拟,帮助隔离测试。 通过这个“Junit4电子教程 API”,学习者将能够深入理解JUnit4提供的各种功能,并学会如何在实际项目中有效地利用...