- 浏览: 197329 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
[标题]:[原]深入JUnit4.x
[时间]:2009-7-5
[摘要]:JUnit4.x参数化测试、私有方法测试、测试套件
[关键字]:JUnit、Test、测试、单元测试、addTest not applicable、suite、套件、参数化测试、私有方法、private、反射、断言
[环境]:JUnit4.5、MyEclipse7
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys
[正文]:
测试目标类:
Calculator.java:
/**
*
* @author Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
* @version 2009-07-05
*/
public class Calculator {
/**
* 加法
* @param a
* @param b
* @return a与b的和
*/
public int add(int a , int b){
return a + b;
}
/**
* 减法,访问权限设为private
* @param a
* @param b
* @return a与b的差
*/
private int sub(int a , int b){
return a - b;
}
}
简单测试
CalculatorTest.java:
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
public class CalculatorTest {
Calculator cal;
@Before
public void setUp() throws Exception {
cal = new Calculator();
}
@Test
public void testAdd(){
int result = cal.add(1, 1);
Assert.assertEquals(2 , result);
}
}
参数化测试CalculatorTestWithParameter.java:
import java.util.Arrays;
import java.util.Collection;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
/**
* JUnit4参数化测试
* @author Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
* @version 2009-07-05
*/
@RunWith(Parameterized.class)
public class CalculatorTestWithParameter {
private int input1;
private int input2;
private int result;
public CalculatorTestWithParameter(int input1, int input2, int result) {
super();
this.input1 = input1;
this.input2 = input2;
this.result = result;
}
@Parameters
public static Collection<Object[]> initParam(){
Object[][] objArray = new Object[][]{
{1 , 1 , 2},
{2 , 5 , 7},
{-1 , 8 , 7},
{-5 , -1 ,-6}
};
return Arrays.asList(objArray);
}
@Test
public void testAdd(){
Calculator cal = new Calculator();
int rt = cal.add(input1, input2);
assertEquals(result , rt);
}
}
测试私有方法CalculatorTestOfPrivate.java:
import java.lang.reflect.Method;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
/**
* JUnit4测试private方法
* @author Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
* @version 2009-07-05
*/
public class CalculatorTestOfPrivate {
Calculator cal;
@Before
public void setUp() throws Exception {
cal = new Calculator();
}
@Test
public void testPrivateMethod(){
Class<Calculator> cls = Calculator.class;
Method method = null;
Object result = 0 ;
try {
method = cls.getDeclaredMethod("sub", new Class<?>[]{int.class,int.class});
method.setAccessible(true);
result = (Object)method.invoke(cal, 1 , 2);
Assert.assertEquals(-1, result);
} catch (Exception e) {
e.printStackTrace();
Assert.fail();
}
}
}
建立测试套件AllTests.java:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
/**
* JUnit4 Test Suite Style
* @author Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
* @version 2009-07-04
*/
//表示这个类是一个测试套件
@RunWith(Suite.class)
//说明这个测试套件所包含的测试类
@SuiteClasses({
SubscriptionTest.class,
CalculatorTest.class,
CalculatorTestWithParameter.class,
CalculatorTestOfPrivate.class
})
public class AllTests {
//在JUnit4.x中,套件类的内容一般留空,只作为以上Annotation的持有者
// the class remains completely empty,
// being used only as a holder for the above annotations
}
附录:
JUnit3.8.x测试套件语法:
package test;
import test.gg.ba.util.UtilityTest;
import junit.framework.Test;
import junit.framework.TestSuite;
public class MyTests {
public static Test suite() {
TestSuite suite = new TestSuite("Test for test");
//$JUnit-BEGIN$
suite.addTest(test.gg.ba.util.UtilityTest.class);
//$JUnit-END$
return suite;
}
}
在JUnit4中运行JUnit3.8.x的测试套件,
Runner for use with JUnit 3.8.x-style:
@RunWith(AllTests.class)
public class ProductTests {
public static junit.framework.Test suite() {
...
}
}
[参考资料]:
[1] Test suites using annotations : http://radio.javaranch.com/lasse/2006/07/27/1154024535662.html
[2] JUnit 4 Test Suite - addTest not applicable : http://www.velocityreviews.com/forums/t636846-junit-4-test-suite-addtest-not-applicable.html
[附件]:
源程序:http://www.blogjava.net/Files/wintys/junit_test.zip
作者:Winty (wintys@gmail.com)
博客:http://www.blogjava.net/wintys
- junit_test.zip (4.1 KB)
- 下载次数: 6
发表评论
-
[原]导出CodeHelp的数据
2009-03-16 17:05 805搬到blogjava总得发点原创的东西吧。 Code ... -
[原]使用Ant实现zip压缩解压功能
2009-03-19 13:17 1673[关键词]:ant,zip,unzip,Apache,压缩,解 ... -
[原]EL函数的使用
2009-04-03 21:29 1073[标题]:EL函数的使用 [时 ... -
[原]对Class.getMethod()的调用未经检查
2009-04-05 15:52 2320[标题]:对Class.getMethod()的调用未经检查 ... -
[原]JNI简单示例
2009-04-05 21:33 1004[标题]:JNI简单示例 [时 ... -
[原]简单工厂模式
2009-04-14 12:26 720[关键字]:java,设计模式,简单工厂,《java与模式》 ... -
[原]工厂模式
2009-04-14 12:32 694[关键字]:java,design pattern,设计模式, ... -
[原]抽象工厂模式
2009-04-14 19:25 719[关键字]:java,design pattern,设计模式, ... -
[原]方法返回值为数组的另一种表示方法
2009-04-25 22:28 937[时间]:2009-04-25 今天看到JDK的源代码 ... -
[原]SAX使用示例
2009-04-26 19:18 2019[标题]:[原]SAX使用示例 [时间]:2009-4-25 ... -
[原]责任链模式
2009-05-09 16:47 693[关键字]:java,design pattern,设计模式, ... -
[原]状态模式
2009-05-18 23:03 745[关键字]:java,design pattern,设计模式, ... -
[原]策略模式
2009-05-21 22:21 661[关键字]:java,design pattern,设计模式, ... -
[原]VC实现重启路由器
2009-05-29 23:36 2045[标题]:[原]VC实现重启路 ... -
[原]远程登录Windows Server 2003的当前会话
2009-06-01 11:19 2033[标题]:远程登录Windows Server 2003的当前 ... -
[原]Tomcat crossContext
2009-06-01 12:27 6022[标题]:Tomcat crossContext [时间]:2 ... -
[原]装饰模式1
2009-06-07 22:33 676[关键字]:java,design pattern,设计模式, ... -
[原]装饰模式3-Grep
2009-06-07 22:42 659[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-透明的
2009-06-08 22:23 729[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-安全的
2009-06-08 22:27 802[关键字]:java,design pattern,设计模式, ...
相关推荐
junit4.x使用指南-帮助文档。junit4.x使用指南-帮助文档。junit4.x使用指南-帮助文档。
junit.framework.JUnit4TestAdapter.class junit.framework.JUnit4TestAdapterCache.class junit.framework.JUnit4TestCaseFacade.class junit.framework.Protectable.class junit.framework.Test.class junit....
junit4.0.zip
junit4.x_en.chm英文帮助文档
junit5.jar
标签:ant-junit4.jar.zip,ant,junit4,jar.zip包下载,依赖包
Junit4.jar, Junit4.jar, Junit4.jar, Junit4.jar, Junit4.jar, Junit4.jar
junit4.8.2.zip 源码,希望对大家有用
junit4的jar包,使用annotation进行junit测试!
JUnit4.8.jar JUnit4.jar
junit3.8.1.rar JAVA编译,测试工具
本资源包包含4.4、4.7、4.8.2、4.11等多个版本的jar包...Junit jar包可供开发过程中对程序的部分功能进行测试,使用时将jar包导入工程,新建测试类,编写测试方法(方法上行需要添加“@Test”标识),以junit方式运行。
junit.jarjunit.jarjunit.jarjunit.jar
JUnit学习笔记及练习用例,主要分为JUnit3.8.2和JUnit4.8.1两个版本。
软件测试与Junit实践.rar软件测试与Junit实践.rar
包括junit4.jar包和源码......
junit4.9.jar 单元测试! @Before:在每一个测试方法执行前执行的方法,用于初始化方法 @After:在第一个测试方法执行后执行的方法,用于释放资源 @Test:标志该方法为测试方法,在此可以测试期望异常和超时时间 @...
Junit4所需的jar包
junit5jar包,从官网下的。放到这里,需要的可以下载,当然也可以从官网下载,这里下载会方便一些