Java单元测试进阶之单元测试框架的出现(初现雏形)

来源:互联网 发布:北京科技大学网络教育 编辑:程序博客网 时间:2024/05/17 02:29
上篇示范了在main方法中进行单元测试,还讨论了这种测试的一些缺点。为了克服main方法进行单元测试的缺点,本篇将讨论使用一个简单的类进行单元测试的过程。透过这个类你可以看到单元测试框架的雏形。

        下面的类还是对CoolClass的reverseString方法进行测试,请看如下代码:

 

/************************************************************
 * 项目名称:lhjTest
 * 文件名称:CoolClassTest.java
 * 文件描述:CoolClassTest.java
 * 作者:Administrator
 * 创建日期:2007-3-24
 * 修改记录:
 **********************************************************
*/

package org.lhj.cool.junit.test;

import org.lhj.cool.junit.CoolClass;

/**
 * @author Administrator
 
*/

public class CoolClassTest
{
    
private CoolClass testClass;
    
    
/**
     * set up the environment
     
*/

    
public void setUp()
    
{
        testClass 
= new CoolClass();
    }

    
    
/**
     * tear down the environment
     
*/

    
public void tearDown()
    
{
        testClass 
= null;
    }

    
    
/**
     * test the null param
     
*/

    
public void testNullParamForReverseString()
    
{
        
try
        
{
            testClass.reverseString(
null);
            System.
out.println("Error:expect throw nullPointerExceptioin but not.");
        }

        
catch (NullPointerException e)
        
{
            System.
out.println("Succeed:test the null param for reverseString succeed.");
        }

    }

    
    
/**
     * test the "" param
     
*/

    
public void testEmptyStringForReverseString()
    
{
        
if (!(null == testClass.reverseString("")))
        
{
            System.
out.println("Error:expect return the null value but not.");
        }

        
else
        
{
            System.
out.println("Succeed:test the "" param for reverseString succeed.");
        }

    }

    
    
/**
     * test the simple param
     
*/

    
public void testSimpleParamForReverseString()
    
{
        
//test the "aaAA" param
        if (!"AAaa".equals(testClass.reverseString("aaAA")))
        
{
            System.
out.println("Error:expect return AAaa but not.");
        }

        
else
        
{
            System.
out.println("Succeed:test the aaAA param for reverseString succeed.");
        }

        
        
//test the "AAaa" param
        if (!"aaAA".equals(testClass.reverseString("AAaa")))
        
{
            System.
out.println("Error:expect return aaAA but not");
        }

        
else
        
{
            System.
out.println("Succeed:test the AAaa param for reverseString succeed.");
        }

        
        
//the other tests...
    }


    
/**
     * this method is for test
     * @param args
     
*/

    
public static void main(String[] args)
    
{
        CoolClassTest testCase 
= new CoolClassTest();
        testCase.setUp();
        testCase.testNullParamForReverseString();
        testCase.testEmptyStringForReverseString();
        testCase.testSimpleParamForReverseString();
        testCase.tearDown();
    }


}

 

        在Eclipse的java编辑器里右键>run as> java application即可运行本测试类。

        在main方法里我们可以看到运行的过程:先setUp环境,然后test测试的方法,最后tearDown环境。

       这就是使用测试类的好处。 可以看出,main方法显得精简了很多,环境设置、测试方法都放到main外面成为单独的方法,各个测试也独立开来不影响其他的测试方法。

       但是随着测试类的增多,你会发现存在如下问题:

1、每个类都要写个main方法,显得比较麻烦。

2、使用System.out.println使得测试比较笨,需要找更加简洁的方法来代替。

3、还是无法进行自动化测试(批量运行main也行,但是性能方面肯定有问题)。

        以上的问题就是框架要出现的原因,使用框架可以避免重复劳动,提高效率。下一篇将介绍单元测试框架的一个例子。

0 0