JUnit3的作用
1. 管理测试用例。修改了哪些代码,这些代码的修改会对哪些部分有影响,通过JUnit将这次的修改做个完整测试。这也就JUnit中所谓的TestSuite。
2. 定义测试代码。这也就是JUnit中所谓的TestCase,根据源代码的测试需要定义每个TestCase,并将TestCase添加到相应的TestSuite方便管理。
3. 定义测试环境。在TestCase测试前会先调用“环境”配置,在测试中使用,当然也可以在测试用例中直接定义测试环境。
4. 检测测试结果。对于每种正常、异常情况下的测试,运行结果是什么、结果是否是我们预期的等都需要有个明确的定义,JUnit在这方面提供了强大的功能。
package can.test; import java.util.ArrayList;
import java.util.Collection;
import junit.framework.TestCase; public class SampleTest extends TestCase { protected void setUp() {
/* 开始test前的准备操作:初始化,获取数据连接... */ } protected void tearDown() {
/* 完成test后的清理工作:关闭文件, 关闭数据连接... */ } public void testEmpty() {
/* test case 1*/
Collection collection = new ArrarList();
assertTrue(collection.isEmpty());
} public void testCase2() {
/* test case 2*/
ArrayList emptyList = new ArrayList();
try {
Object o = emptyList.get(0);
fail("Should raise an IndexOutOfBoundsException");
} catch (IndexOutOfBoundsException expected) {
assertTrue(true);
}
}
}
1. 当需要进行test前后操作,则对setUp(), tearDown()这两个方法进行重写。
1 setUp()
2 testYYY()
3 tearDown()
4 setUp()
5 testXXX()
6 tearDown()
所以每个testcase不要存在数据上的前后联系。
import junit.framework.Test;
import junit.framework.TestSuite; public static Test suite() {
/* 添加SampleTest类到TestSuite*/
return new TestSuite(SampleTest.class);
} public static void main(String args[]) {
/* 指定文本界面*/
junit.textui.TestRunner.run(suite());
}
或者
public static void main(String args[]) {
junit.textui.TestRunner.run(SampleTest.class);
}
package can.junit; import junit.framework.Test;
import junit.framework.TestSuite; public class SampleTestSuite { public static Test suite() {
TestSuite suite = new TestSuite("Sample Tests"); /* 逐一添加testCase类 */
suite.addTestSuite(SampleTest.class); /* 逐一添加test suite(注意,这是递归调用的) */
suite.addTest(AnotherTestSuite.suite()); return suite;
} public static void main(String args[]) {
junit.textui.TestRunner.run(suite());
}
}
刚才说了,每进行一个test case,setUp()和tearDown()都会调用。而有的时候,在setUp()中相当耗费资源,我们想进行所有的test case仅调用一次setUp()和tearDown(),这样需要把TestSuite包装到TestSetup类中:
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
}
}
JUnit3的作用的更多相关文章
- Junit3与Junit4的区别
Junit4最大的亮点就是引入了注解(annotation),通过解析注解就可以为测试提供相应的信息,抛弃junit3使用命名约束以及反射机制的方法. /** * 被测试类 */ package co ...
- JAR包介绍大全用途作用详解JAVA
jta.jar 标准JTA API必要commons-collections.jar 集合类 必要antlr.jar ANother Tool for Language Recognition 必要 ...
- java项目中.classpath,.settings,.project,mymetadata文件的作用
今天犯了一个错误,误修改了本地的.classpath文件,导致项目好多地方报错,之前也没有仔细的研究过项目中的一些生成文件的作用. 今天特此进行记录. 不管我们在eclipse中新建任何的Java项目 ...
- Hibernate3 jar包的作用[转]
from:http://nopainnogain.iteye.com/blog/761630 (1)hibernate3.jar: Hibernate的核心库,没有什么可说的,必须使用的jar包 (2 ...
- JAVA、android中常用的一些jar包的作用
正文: 这里主要介绍的是hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱.本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进 ...
- jar包作用
hibernate中jar包的作用 (1)hibernate3.jar:Hibernate的核心库,没有什么可说的,必须使用的jar包 (2)cglib-asm.jar:CGLIB库,Hibernat ...
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
- if __name__== "__main__" 的意思(作用)python代码复用
if __name__== "__main__" 的意思(作用)python代码复用 转自:大步's Blog http://www.dabu.info/if-__-name__ ...
- (转载)linux下各个文件夹的作用
linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...
随机推荐
- SpringMVC 表单标签 & 处理静态资源
使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...
- web学习之servlet
1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: %tomcat%/bin/shutdown. ...
- ajax里面success函数return上层接收不到
开发一个小功能,在success fail里直接return,没有收到返回值.排查,查了下往上的博客,参考了以下三个: http://blog.csdn.net/fairyhawk/article/d ...
- Two Sum (c#)
Given an array of integers, find two numbers such that they add up to a specific target number. The ...
- 浅谈c语言的指针
对于非计算机专业的同学,c语言的指针往往就是老师的一句“指针不考“就带过了.c语言的指针号称是c语言的灵魂,是c语言中最精妙的部分. 指针本质上也是变量,也就是一段内存,只是他的特殊之处是他存储的数据 ...
- 2.4G/5G频段WLAN的模式、带宽、协商速率
2.4G频段 5G频段
- rails 常用的验证方法 validates (转)
Agile Web Development with Rails 17.4 validation validate 在save的时候激活validate_on_create ...
- MATLAB中白噪声的产生
rand产生的是[0,1]上的均匀分布的随机序列randn产生均值为0,方差为1的高斯随机序列,也就是白噪声序列 rand产生的是均匀分布白噪声序列randn产生的是正态分布的白噪声序列 MATLAB ...
- entity framework 新手入门篇(2)-entity framework基本的增删改查
经过前两节的简单描述,终于可以进入entity framework的使用部分了.本节将对entity framework原生的增删改查进行讲解. 承接上面的部分,我们有一个叫做House的数据库,其中 ...
- what just I know
#update_s#http://www.taijixy.com/linker.html#update_e# #server_s#www.taijixy.com#server_e# #live_ver ...