`
369128396
  • 浏览: 84233 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
关键字: junit test
1、将junit的jar包放在工程的classpath中
2、创建Junit Test Case,其类继承自junit.framework.TestCase,选择要测试的类,点击“下一步”,选择所要测试的类的方法,在写测试方法时要遇到assert的一系列方法判断测试结果正确与否(测试类的测试方法应该以test开头,必须是public void,并且无参的):
如:
原类:
public class SampleCalculator {  
public int add(int augend, int addend) {  
      return augend + addend;  
    }  
    public int subtration(int minuend, int subtrahend){  
        return minuend - subtrahend;  
    }  

测试类:
import junit.framework.TestCase;  
public class TestSample extends TestCase {  
public void testAdd() {  
SampleCalculator calculator = new SampleCalculator();  
        int result = calculator.add(50, 20);  
        assertEquals(70, result);  
    }  
    public void testSubtration() {  
        SampleCalculator calculator = new SampleCalculator();  
        int result = calculator.subtration(50, 20);  
        assertEquals(30, result);  
    }  

3、后以Junit Test方式运行,如果运行结果显示绿色则单元测试通过,若为红色则测试失败。
注意:在JUnit中的初始化是建议在Setup方法中作的,在运行图中有Erros,Failures统计。
Failures作为单元测试所期望发生的错误,它预示你的代码有bug,不过也可能是你的单元测试代码有逻辑错误(注意是逻辑错误)。Errors不是你所期待的,发生了Error你可以按照下面的顺序来检查:
检查测试所需的环境,如:数据库连接,检查单元测试代码,检查你的系统代码

4、成批运行test case
import junit.framework.Test;  
import junit.framework.TestSuite;  
public class TestAll {  
    public static TestSuite suite() {  
        TestSuite suite = new TestSuite("TestSuite Test");  
        //添加junit测试类  
        suite.addTestSuite(TestSample.class);  
        return suite;  
    }  

5、JUNIT给出了3种方式表示TestRunner
junit.swingui.TestRunner
junit.awtui.TestRunner
junit.textui.TestRunner

  6、在Junit中testcase继承了TestCase的setUp()和tearDown()两个方法,一个是初始化,一个是撤销初始化。
@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
super.setUp();
//初始化
}

@Override
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
super.tearDown();
//撤销初始化
}

执行顺序:setUp()——》testXX()方法1——》tearDown()——》setUp()——》testXX()方法2——》tearDown()

7、以下为JUNIT简单测试样例1. 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);   
    }   
}   
注意:一、不要在测试用例的构造函数中做初始化
    答案是重载测试用例的setUp()方法进行初始化。
二、不要假定测试用例中测试的执行次序
    好的习惯是保持测试之间的独立性,使得它们在任何次序下执行的结果都是相同的。
三、测试要避免人工干预
    经验二讲的是不同的测试要避免相关性,而经验三讲的其实就是测试要避免自相关。
四、在子类中调用父类的setUp() 和tearDown()
五、不要硬性规定数据文件的路径
六、把测试的代码和被测的代码放在同样的目录下
七、正确命名测试
八、书写测试时要考虑地区和国家设置
九、利用Junit 的自动异常处理书写简洁的测试代码
     事实上在Junit 中使用try-catch 来捕获异常是没有必要的,Junit 会自动捕获异常。那些没有被捕获的异常就被当成错误处理。
十、充分利用Junit 的assert/fail 方法
     assertSame()用来测试两个引用是否指向同一个对象
     assertEquals()用来测试两个对象是否相等
十一、确保测试代码与时间无关
十二、使用文档生成器做测试文档。

8、JUNIT的好处、编写原则、特征及框架组成
好处:
A、可以使测试代码与产品代码分开。
B、针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试。
C、易于集成到测试人员的构建过程中,JUnit和Ant的结合可以实施增量开发。
D、JUnit是公开源代码的,可以进行二次开发。
C、可以方便地对JUnit进行扩展。
编写原则:
    A、是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写。
B、是使测试单元保持持久性。
C、是可以利用既有的测试来编写相关的测试。
3.2、JUnit的特征
    A、使用断言方法判断期望值和实际值差异,返回Boolean值。
B、测试驱动设备使用共同的初始化变量或者实例。
C、测试包结构便于组织和集成运行。
D、支持图型交互模式和文本交互模式。
3.3、JUnit框架组成
A、对测试目标进行测试的方法与过程集合,可称为测试用例(TestCase)。
B、测试用例的集合,可容纳多个测试用例(TestCase),将其称作测试包(TestSuite)。
C、测试结果的描述与记录。(TestResult) 。
D、测试过程中的事件监听者(TestListener)。
E、每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素(TestFailure)
F、JUnit Framework中的出错异常(AssertionFailedError)。
9、JUNIT中常用的接口和类:
3.5、JUnit中常用的接口和类
Test接口——运行测试和收集测试结果
Test接口使用了Composite设计模式,是单独测试用例 (TestCase),聚合测试模式(TestSuite)及测试扩展(TestDecorator)的共同接口。
它的public int countTestCases()方法,它来统计这次测试有多少个TestCase,另外一个方法就是public void run( TestResult ),TestResult是实例接受测试结果, run方法执行本次测试。
TestCase抽象类——定义测试中固定方法
TestCase是Test接口的抽象实现,(不能被实例化,只能被继承)其构造函数TestCase(string name)根据输入的测试名称name创建一个测试实例。由于每一个TestCase在创建时都要有一个名称,若某测试失败了,便可识别出是哪个测试失败。
TestCase类中包含的setUp()、tearDown()方法。setUp()方法集中初始化测试所需的所有变量和实例,并且在依次调用测试类中的每个测试方法之前再次执行setUp()方法。tearDown()方法则是在每个测试方法之后,释放测试程序方法中引用的变量和实例。
开发人员编写测试用例时,只需继承TestCase,来完成run方法即可,然后JUnit获得测试用例,执行它的run方法,把测试结果记录在TestResult之中。
Assert静态类——一系列断言方法的集合
Assert包含了一组静态的测试方法,用于期望值和实际值比对是否正确,即测试失败,Assert类就会抛出一个AssertionFailedError异常,JUnit测试框架将这种错误归入Failes并加以记录,同时标志为未通过测试。如果该类方法中指定一个String类型的传参则该参数将被做为AssertionFailedError异常的标识信息,告诉测试人员改异常的详细信息。
JUnit 提供了6大类31组断言方法,包括基础断言、数字断言、字符断言、布尔断言、对象断言。
其中assertEquals(Object expcted,Object actual)内部逻辑判断使用equals()方法,这表明断言两个实例的内部哈希值是否相等时,最好使用该方法对相应类实例的值进行比较。而assertSame(Object expected,Object actual)内部逻辑判断使用了Java运算符“==”,这表明该断言判断两个实例是否来自于同一个引用(Reference),最好使用该方法对不同类的实例的值进行比对。asserEquals(String message,String expected,String actual)该方法对两个字符串进行逻辑比对,如果不匹配则显示着两个字符串有差异的地方。ComparisonFailure类提供两个字符串的比对,不匹配则给出详细的差异字符。
TestSuite测试包类——多个测试的组合
TestSuite类负责组装多个Test Cases。待测得类中可能包括了对被测类的多个测试,而TestSuit负责收集这些测试,使我们可以在一个测试中,完成全部的对被测类的多个测试。
TestSuite类实现了Test接口,且可以包含其它的TestSuites。它可以处理加入Test时的所有抛出的异常。
TestSuite处理测试用例有6个规约(否则会被拒绝执行测试)
        A 测试用例必须是公有类(Public)
        B 测试用例必须继承与TestCase类
        C 测试用例的测试方法必须是公有的( Public )
        D 测试用例的测试方法必须被声明为Void
        E 测试用例中测试方法的前置名词必须是test
        F 测试用例中测试方法误任何传递参数
n       TestResult结果类和其它类与接口
TestResult结果类集合了任意测试累加结果,通过TestResult实例传递个每个测试的Run()方法。TestResult在执行TestCase是如果失败会异常抛出
TestListener接口是个事件监听规约,可供TestRunner类使用。它通知listener的对象相关事件,方法包括测试开始startTest(Test test),测试结束endTest(Test test),错误,增加异常addError(Test test,Throwable t)和增加失败addFailure(Test test,AssertionFailedError t)
TestFailure失败类是个“失败”状况的收集类,解释每次测试执行过程中出现的异常情况。其toString()方法返回“失败”状况的简要描述
分享到:
评论

相关推荐

    JUnit入门及简单使用

    JUnit 是一个广泛使用的开源Java测试框架,由Erich Gamma和Kent Beck开发,主要用于进行回归测试,确保代码在修改后仍能按预期工作。JUnit测试主要是白盒测试,因为程序员对被测试的软件内部结构有深入理解,能够...

    jUnit入门教程 jUnit教程

    【jUnit入门教程 - jUnit教程】 jUnit是一款广泛应用于Java编程语言的单元测试框架,它使得开发者能够方便地编写和执行针对代码功能的测试用例。本教程旨在为初学者提供一个jUnit的基础入门指南,帮助理解如何利用...

    junit 入门培训ppt

    本文将深入探讨JUnit入门培训的关键概念和技术。 首先,我们要理解什么是Test Driven Development(TDD),即测试驱动开发。TDD是一种软件开发方法论,它提倡在编写实际业务代码之前先编写测试。通过这种方式,...

    Junit入门练习代码

    本资源“Junit入门练习代码”旨在帮助初学者掌握JUnit的基本概念和使用方法,通过实践来加深理解。下面我们将深入探讨JUnit的相关知识点。 1. **JUnit简介**:JUnit是Java语言中的一个开源测试框架,由Ernst Leiss...

    Junit入门全攻略

    JUnit入门全攻略 JUnit是一个广泛使用的开源Java测试框架,它为编写和执行可重复的单元测试提供了便利。作为xUnit架构的一部分,JUnit使得开发者能够轻松地编写和组织测试用例,确保代码的质量和稳定性。本文将详细...

    Junit入门培训资料(断言相关)

    ### Junit入门培训资料(断言相关):深入解析与应用 #### Junit概述与重要性 JUnit,作为由Kent Beck和Erich Gamma共同开发的开源Java测试框架,已成为Java开发人员进行单元测试的首选工具。它不仅是Java编程语言...

    JUnit入门资料合集

    这个“JUnit入门资料合集”看起来包含了多个部分,涵盖了从软件架构到内部机制,再到讲课文档的全面教程。 1. **软件架构**: JUnit的架构基于设计模式,主要是工厂模式和装饰器模式。它通过`Test`接口定义了测试...

    Junit入门及应用

    【JUnit入门及应用】 JUnit是Java开发者常用的单元测试框架,它的主要目的是为了编写和执行可重复的测试,确保代码的质量和稳定性。作为一个开源项目,JUnit是xUnit家族的一员,适用于进行白盒测试和回归测试。 **...

    JUnit入门

    ### JUnit入门详解 #### 一、JUnit简介 JUnit是一个流行的Java单元测试框架,它提供了一种简单有效的方式来编写和运行测试用例。对于初学者来说,了解JUnit的基本概念和使用方法是非常重要的。 #### 二、JUnit的...

    Junit 入门与提高实例代码

    《Junit 入门与提高实例代码》是针对Java开发者,特别是J2EE环境下的测试工程师的一份宝贵资源。这份资料旨在帮助初学者快速掌握Junit的使用,并通过实例提升测试技能,确保J2EE应用的质量和稳定性。下面将详细阐述...

    Junit入门实验Junit入门实验

    这个"Junit入门实验"旨在帮助初学者理解和掌握JUnit的基本概念和使用方法。通过这个实验,你将学习如何设置测试环境,创建测试类,编写测试用例,并理解断言和异常处理。 1. **安装与引入JUnit** 在开始之前,你...

    JUnit 入门教程

    ### JUnit入门教程知识点概述 #### 一、JUnit简介 - **定义**:JUnit是一种针对Java编程语言的单元测试框架。它在测试驱动开发(TDD)的发展中扮演了重要角色,并且是XUnit家族的一员,这个家族起源于JUnit。 - **...

    JUnit入门,非常实用!

    JUnit 是一个广泛使用的Java编程语言的单元测试框架,它的主要目标是帮助开发者编写可重复运行的测试用例,以确保代码的正确性和稳定性。JUnit 的出现源于Erich Gamma和Kent Beck两位大师,他们是面向对象设计模式和...

    junit入门资料

    总之,这个"junit入门资料"应该包含了一系列的实践示例和讲解材料,帮助你从零开始学习JUnit,逐步掌握单元测试的技巧和最佳实践,从而提升你的Java编程能力。通过深入学习和实践,你将能够有效地利用JUnit进行高...

    JUnit入门介绍

    ### JUnit入门精讲 **一、JUnit概览** JUnit是一种强大的开源Java测试框架,专为软件开发者设计,旨在促进可重复使用的单元测试编写。它作为xUnit家族的一员,特别适用于Java语言,常用于白盒测试和回归测试,确保...

Global site tag (gtag.js) - Google Analytics