`

JUNIT简单实例及模板

阅读更多
转: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单元测试的实验报告.docx

    简单介绍了Junit的安装过程与实例应用。应用的问题是软件测试中的佣兵问题,整个文档中有代码及测试结果,可以更好地帮助学生了解Junit单元测试中的作用。

    JUnit 5.pdf

    JUnit 5是JUnit的最新一代测试框架,它为Java平台上的开发者测试提供了最新的基础,特别专注于Java 8及更高版本的测试能力,并支持不同风格的测试方法。JUnit 5由三个不同子项目的组合构成,它们分别是JUnit ...

    Junit5用户手册

    JUnit5支持多个Java版本,包括Java 8及以上版本。这意味着开发人员可以根据项目的实际需求选择合适的Java版本进行开发和测试。 **1.3 获取帮助** 对于使用过程中遇到的问题或疑问,可以参考官方文档、社区论坛或是...

    JUnit设计模式分析及简化的JUnit代码

    模板方法模式在JUnit的测试运行器(Runner)中有所体现,如`BlockJUnit4ClassRunner`,它定义了执行测试的基本结构,而子类可以覆盖其中的方法来定制测试执行的细节。 最后,JUnit的可扩展性体现在其插件机制上,...

    Junit设计模式分析

    5. 模板方法模式:JUnit的测试框架本身就是一个模板方法设计模式的例子。每个测试用例都遵循一个固定的执行流程(设置-执行-验证-清理),这个流程由JUnit框架定义,而具体的测试逻辑则由用户编写。 6. 装饰者模式...

    Junit5.pdf 官网英文文档

    扩展模型概览(Overview)、注册扩展(RegisteringExtensions)、条件测试执行、测试实例后处理(TestInstancePost-processing)、参数解析(ParameterResolution)、测试生命周期回调(TestLifecycleCallbacks)、...

    Junit 5 文档

    扩展可以注册到JUnit Jupiter的测试引擎中,从而影响测试的执行,包括条件测试执行、测试实例的后处理、参数解析、测试生命周期回调、异常处理、提供测试模板的调用上下文以及在扩展中保持状态。 18. 从JUnit 4迁移...

    activti实例带完整JUnit4测试

    标题"activti实例带完整JUnit4测试"表明这是一个关于Activiti的工作流程引擎的实例项目,其中包含了使用JUnit4进行的全面测试。Activiti是一个开源的业务流程管理(BPM)和工作流系统,它允许开发者通过模型驱动的...

    JUnit设计模式分析

    “模板方法模式”(Template Method Pattern)体现在JUnit的测试执行流程中。`BlockJUnit4ClassRunner`定义了一个测试执行的大致框架,而具体步骤如设置、执行和清理由子类根据需要重写。 总结来说,JUnit在设计上...

    Junit5用户文档

    JUnit5相对于之前的版本(如JUnit4)进行了重大的改进与扩展,它分为三个主要模块:JUnit Platform、JUnit Jupiter和JUnit Vintage。 - **JUnit Platform**:用于执行测试的引擎,不仅支持JUnit5格式的测试,还能...

    JUnit5 User Guide

    这些特性包括注解的改进、断言的增强、假设的使用、测试禁用、条件测试执行、标签和过滤、测试实例生命周期管理、嵌套测试、构造函数和方法的依赖注入、测试接口和默认方法、重复测试、参数化测试、消费参数、测试...

    Junit设计模式分析(带源码)

    - 模板方法模式:JUnit的Test接口定义了测试的生命周期,具体实现由子类覆盖模板方法完成,如setup和tearDown。 - 钩子函数:@Before、@After等注解体现了观察者模式,它们在特定事件(如测试开始或结束)触发时...

    java中的测试用例模板.pdf

    这里我将提供一个简单的JUnit测试用例模板作为示例。JUnit是目前Java社区中使用最广泛的单元测试框架之一。 JUnit 5 测试用例模板 JUnit 5是JUnit框架的最新版本,它引入了许多新特性和改进。以下是JUnit 5中编写...

    junit源码以及牵涉到的设计模式

    在JUnit中,`TestSuite`类充当了组合模式的角色,它可以包含多个`TestCase`实例,这样就可以将多个测试案例组合在一起,形成一个大的测试集合。 - **组合测试案例**:通过组合模式,JUnit允许用户将多个`TestCase`...

    JUnit的框架设计及其使用的设计模式

    6. **模板方法模式**:JUnit的TestWatcher是一个抽象类,提供了模板方法,允许子类在特定测试事件发生时执行自定义操作,如在测试失败时生成详细的日志。 在实际使用中,开发者还可以结合其他设计模式,如单例模式...

    junit5.7 pdf

    ### JUnit 5.7: 深入理解单元与集成测试 #### 一、概述 **1.1 什么是JUnit 5?** JUnit 5是JUnit框架的最新版本,它是一个广泛使用的Java编程语言的单元测试框架。JUnit 5在设计上与JUnit 4相比有了重大的改进,...

    junit完整教程(原创文章,版权所有,请勿侵权)

    ### JUnit 完整教程 #### 一、JUnit 概述与...通过以上实例,可以看出 JUnit 提供的强大功能和灵活性,使得开发者能够方便地编写和维护高质量的测试代码。无论是简单的功能验证还是复杂的依赖模拟,JUnit 都能胜任。

    spring+springmvc+mybatis 简单实例

    这个"spring+springmvc+mybatis 简单实例"是一个基础教程,旨在帮助初学者理解这三大框架如何协同工作。 首先,Spring是一个全面的后端开发框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,使得代码更加...

Global site tag (gtag.js) - Google Analytics