转:
http://www.iteye.com/topic/91663
环境:windows2000,Eclipse3.1,JDK1.4
开发过程中进行单元测试,尽可能尽早的将BUG找出,是开发者应该做的。JUNIT为JAVA开发者提供了一个很好的测试机制,以下是一个简单的JUNIT应用实例,也是初学可供参考的JUNIT模板。
java 代码
package junit.sineat.templet;
import java.util.Hashtable;
import junit.framework.Assert;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class JunitB extends TestCase{
/**定义你需要测试的类及用到的变量*****************************/
public Hashtable hasha=null;//
public Hashtable hashb=null;
/*******************************************************/
public JunitB(String name){
super(name);//创建子类
}
/**用setUp进行初始化操作*/
protected void setUp() throws Exception {
super.setUp();
hasha =new Hashtable();//这里
}
/**用tearDown来销毁所占用的资源*/
protected void tearDown() throws Exception {
super.tearDown();
//System.gc();
}
/**写一个测试方法断言期望的结果**/
public void testBodyStatus() {
//hasha =new Hashtable();//有此句后也可去掉setUp() tearDown()
assertNotNull(hasha);
//hasha.put("0","let's try again");//test1.error版
assertTrue(hasha.isEmpty());//期望为空
}
/**再写一个测试方法断言期望的结果**/
public void testBodySame() {
//hashb=(Hashtable)hasha.clone(); //test2.error版
hashb=hasha; //test2.OK 版
Assert.assertSame(hasha,hashb);
}
/**suite()方法,使用反射动态的创建一个包含所有的testXxxx方法的测试套件**/
public static TestSuite suite() {
return new TestSuite(JunitB.class);
}
/****写一个main()运行测试*****************/
public static void main(String args[]) {
junit.textui.TestRunner.run(suite());//以文本运行器的方式方便的
//junit.swingui.TestRunner.run(JunitB.class);
}
}
以上为JUNIT的简单测试样例,不需过多考虑性能及规范,但资深JAVA开发者建议:
一、不要在测试用例的构造函数中做初始化
答案是重载测试用例的setUp()方法进行初始化。
二、不要假定测试用例中测试的执行次序
好的习惯是保持测试之间的独立性,使得它们在任何次序下执行的结果都是相同的。
三、测试要避免人工干预
经验二讲的是不同的测试要避免相关性,而经验三讲的其实就是测试要避免自相关。
四、在子类中调用父类的setUp() 和tearDown()
五、不要硬性规定数据文件的路径
六、把测试的代码和被测的代码放在同样的目录下
七、正确命名测试
八、书写测试时要考虑地区和国家设置
九、利用Junit 的自动异常处理书写简洁的测试代码
事实上在Junit 中使用try-catch 来捕获异常是没有必要的,Junit 会自动捕获异常。那些没有被捕获的异常就被当成错误处理。
十、充分利用Junit 的assert/fail 方法
assertSame()用来测试两个引用是否指向同一个对象
assertEquals()用来测试两个对象是否相等
十一、确保测试代码与时间无关
十二、使用文档生成器做测试文档。
以上资料来自:“JUnit使用经验”,原作:Andy Schneider Richard Dallaway 等,编译:PMT 测试工作组。
分享到:
相关推荐
简单介绍了Junit的安装过程与实例应用。应用的问题是软件测试中的佣兵问题,整个文档中有代码及测试结果,可以更好地帮助学生了解Junit单元测试中的作用。
JUnit 5是JUnit的最新一代测试框架,它为Java平台上的开发者测试提供了最新的基础,特别专注于Java 8及更高版本的测试能力,并支持不同风格的测试方法。JUnit 5由三个不同子项目的组合构成,它们分别是JUnit ...
JUnit5支持多个Java版本,包括Java 8及以上版本。这意味着开发人员可以根据项目的实际需求选择合适的Java版本进行开发和测试。 **1.3 获取帮助** 对于使用过程中遇到的问题或疑问,可以参考官方文档、社区论坛或是...
模板方法模式在JUnit的测试运行器(Runner)中有所体现,如`BlockJUnit4ClassRunner`,它定义了执行测试的基本结构,而子类可以覆盖其中的方法来定制测试执行的细节。 最后,JUnit的可扩展性体现在其插件机制上,...
5. 模板方法模式:JUnit的测试框架本身就是一个模板方法设计模式的例子。每个测试用例都遵循一个固定的执行流程(设置-执行-验证-清理),这个流程由JUnit框架定义,而具体的测试逻辑则由用户编写。 6. 装饰者模式...
扩展模型概览(Overview)、注册扩展(RegisteringExtensions)、条件测试执行、测试实例后处理(TestInstancePost-processing)、参数解析(ParameterResolution)、测试生命周期回调(TestLifecycleCallbacks)、...
扩展可以注册到JUnit Jupiter的测试引擎中,从而影响测试的执行,包括条件测试执行、测试实例的后处理、参数解析、测试生命周期回调、异常处理、提供测试模板的调用上下文以及在扩展中保持状态。 18. 从JUnit 4迁移...
标题"activti实例带完整JUnit4测试"表明这是一个关于Activiti的工作流程引擎的实例项目,其中包含了使用JUnit4进行的全面测试。Activiti是一个开源的业务流程管理(BPM)和工作流系统,它允许开发者通过模型驱动的...
“模板方法模式”(Template Method Pattern)体现在JUnit的测试执行流程中。`BlockJUnit4ClassRunner`定义了一个测试执行的大致框架,而具体步骤如设置、执行和清理由子类根据需要重写。 总结来说,JUnit在设计上...
JUnit5相对于之前的版本(如JUnit4)进行了重大的改进与扩展,它分为三个主要模块:JUnit Platform、JUnit Jupiter和JUnit Vintage。 - **JUnit Platform**:用于执行测试的引擎,不仅支持JUnit5格式的测试,还能...
这些特性包括注解的改进、断言的增强、假设的使用、测试禁用、条件测试执行、标签和过滤、测试实例生命周期管理、嵌套测试、构造函数和方法的依赖注入、测试接口和默认方法、重复测试、参数化测试、消费参数、测试...
- 模板方法模式:JUnit的Test接口定义了测试的生命周期,具体实现由子类覆盖模板方法完成,如setup和tearDown。 - 钩子函数:@Before、@After等注解体现了观察者模式,它们在特定事件(如测试开始或结束)触发时...
这里我将提供一个简单的JUnit测试用例模板作为示例。JUnit是目前Java社区中使用最广泛的单元测试框架之一。 JUnit 5 测试用例模板 JUnit 5是JUnit框架的最新版本,它引入了许多新特性和改进。以下是JUnit 5中编写...
在JUnit中,`TestSuite`类充当了组合模式的角色,它可以包含多个`TestCase`实例,这样就可以将多个测试案例组合在一起,形成一个大的测试集合。 - **组合测试案例**:通过组合模式,JUnit允许用户将多个`TestCase`...
6. **模板方法模式**:JUnit的TestWatcher是一个抽象类,提供了模板方法,允许子类在特定测试事件发生时执行自定义操作,如在测试失败时生成详细的日志。 在实际使用中,开发者还可以结合其他设计模式,如单例模式...
### JUnit 5.7: 深入理解单元与集成测试 #### 一、概述 **1.1 什么是JUnit 5?** JUnit 5是JUnit框架的最新版本,它是一个广泛使用的Java编程语言的单元测试框架。JUnit 5在设计上与JUnit 4相比有了重大的改进,...
### JUnit 完整教程 #### 一、JUnit 概述与...通过以上实例,可以看出 JUnit 提供的强大功能和灵活性,使得开发者能够方便地编写和维护高质量的测试代码。无论是简单的功能验证还是复杂的依赖模拟,JUnit 都能胜任。
这个"spring+springmvc+mybatis 简单实例"是一个基础教程,旨在帮助初学者理解这三大框架如何协同工作。 首先,Spring是一个全面的后端开发框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,使得代码更加...