- 浏览: 181346 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1044后续: 1. 拦截器 uk.ltd.get ... -
DWR 1
2011-06-21 12:58 885原文:http://www.blogjava.net/Supe ... -
log4j.properties的路径问题
2011-06-20 11:59 5413log4j.properties如果放在web-inif/cl ... -
Class.forName
2011-06-19 19:55 1159Class.forName(xxx.xx.xx) 返回 ... -
myeclipse优化 Maven
2011-06-18 09:11 81781.禁用myeclipse updating indexes ... -
ThreadLocal学习2
2011-06-10 13:15 1138典型实例 Hiberante的HibernateSessio ... -
【转】ThreadLocal学习一
2011-06-10 11:05 1325我们知道Spring通过各种D ... -
java 动态代理 proxy InvocationHandler
2011-06-09 16:27 5358一篇杂文,写到哪就说到哪。在一些框架中有所谓的截面(aop), ... -
httpUrlConnection参数详解
2011-06-02 12:54 13462// 设置是否向httpUrlConnection输出,因为这 ... -
HttpURLConnection使用代理服务器
2011-06-02 11:48 2491目前网络上最流行的协 ... -
连接雅虎财经API获取股票信息
2011-06-02 11:29 24579一直想自己做个简单的股票系统,来记录股票的价格。在网上看了下, ... -
java字符串split方法的诡异
2011-06-01 18:01 946String str = "#123" ... -
eclipse插件
2011-05-30 14:05 783正则表达式插件 http://regex-util.sourc ... -
Hibernate annotation学习笔记1
2011-05-19 17:16 1一系列笔记所使用的数据库表关系图 -
利用ant.jar进行解压缩
2011-05-19 16:22 4091package com.zoucq; import java ... -
JSPWiki的安装
2011-05-19 15:02 2355平时喜欢用word,excel文档保存一些知识点,日子久了就发 ... -
quartz监听器
2011-05-18 15:32 6873Quartz主要包含三个组件job,trigger,sched ... -
junit4新框架hamcrest的assertThat
2011-05-18 13:13 7377assertThat JUnit4.4引入了Hamcrest ... -
quartz日记4-触发器
2011-05-17 17:16 1058SimpleTrigger 如果需要计 ... -
quartz日记3-quartz的基本类
2011-05-17 16:46 659Quartz的几个核心的接口和类为: Job接口:自 ...
相关推荐
JUnit4
运行junit4所需jar包,包括junit-4.11.jar与 hamcrest-core-1.3.jar
java junit4 jar完整包,junit可用来项目的单元测试。
junit4学习文档,有实例,非常详细,不懂的可以参考
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测试的jar包,copy进去就可用
junit4教程(《Junit4初探》)
JUnit4基础文档
junit3.8 和junit4 api
org.junit.internal.builders.JUnit3Builder.class org.junit.internal.builders.JUnit4Builder.class org.junit.internal.builders.NullBuilder.class org.junit.internal.builders.SuiteMethodBuilder.class org....
JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程
junit单元测试jar包。
junit4.1junit4.1junit4.1junit4.1junit4.1
junit3 junit4 api,单元测试的利器
idea junitidea junitidea junitidea junitidea junitidea junit
因 jdk5 中的新特性,JUnit4 也因此有了很大的改变。下面详细介绍 JUnit4 的使用方法,只是举个例子说明junit4 的使用
junit4的jar包,使用annotation进行junit测试!
JUnit in Action 3nd Edition
本文介绍了JUnit 4并不是第一个提供基于注释的灵活模型的Java:trade_mark:测试框架。在修改JUnit之前很久TestNG 就已建立为一个基于注释的框架。事实上,是TestNG在Java编程中率先 实现了利用注释进行测试,这使它...
JUnit4概述,在Eclipse中使用JUnit4进行单元测试(初级篇、中级篇、高级篇)