JUnit实践

利用JUnit框架来写一个测试。很简单的测试,算是JUnit实践的入门吧。

首先,JUnit框架的几个比较重要的类:

1.TestCase

定义了可以用于多项测试的环境。我们自己写的每个测试类(test case)都必须继承TestCase。

2.TestSuite

可以一下子运行一组测试类。

3.Assert

 

开始码程序。

 

第一步:写两个类,它们就是测试的对象。

Add类和Sub类,很简单的两个类,从类名就可以看出它们是用来干什么的。极其的简单。

 

package  srv;

public   class  Add  {
    
    
public int add(int x,int y){
        
return x+y;    
    }

}

 

 

 

package  srv;

public   class  Sub  {
    
    
public int sub(int x,int y){
        
return x-y;
    }

}

第二步:编写两个测试类

注意:必须继承TestCase(junit.framework.TestCase)。

import  srv.Add;
import  junit.framework.TestCase;

public   class  TestAdd  extends  TestCase  {

    
public void testAdd(){
        Add add
=new Add();
        
int result=add.add(11);
        assertEquals(result,
2);
    }

}

 

 

import  srv.Sub;
import  junit.framework.TestCase;

public   class  TestSub  extends  TestCase  ... {

    
public void testSub()...{
        Sub sub
=new Sub();
        
int result=sub.sub(21);
        assertEquals(result,
1);
    }

}

 

分别运行这两个测试类,OK。

这里只有两个测试类,每个点一次"Run as-JUnit Test"还比较方便,如果有20个呢?那就需要用到TestSuite了,可以一下子运行一组。

第三步:编写自己的TestSuite

编写一个TestAll2,继承TestSuite(junit.framework.TestSuite)。

定义一个static的suite()方法,返回类型为TestSuite。往其中加入需要进行测试的类--ts.addTestSuite()。

 

import  junit.framework.TestSuite;

public   class  TestAll2  extends  TestSuite  {

    
public static TestSuite suite(){
        TestSuite ts
=new TestSuite();
        ts.addTestSuite(test.testcase.TestAdd.
class);
        ts.addTestSuite(test.testcase.TestSub.
class);
        
return ts;
    }

}

现在只需要,点一次"Run as-JUnit Test,就可以运行所有的测试类了。

第四步:改进自己写的TestSuite

上面的TestAll2类仍有不足,若我们写了新的测试类,还要自己手动去添加TestSuite。

改进的办法就是把测试类放到一个包下(我这里放在test.testcase包中),然后把此包下的所有测试类都添加到TestSuite中。

 

public   class  TestAll  extends  TestSuite  {

    
public static  TestSuite suite(){
        TestSuite ts 
= new TestSuite();
        
//获取包testcase下所有的的测试类来作测试
        File file = new File(ClassLoader.getSystemResource("test/testcase").getFile());
        
if(file.exists()){
            File[] fls 
= file.listFiles();
            
for(File fl : fls){
                String fname 
= fl.getName();
                
if(fname.endsWith(".class")){
                    fname 
= fname.substring(0, fname.indexOf(".class"));
                    fname 
= "test.testcase." + fname;
                    
try {
                        Class cla 
= Class.forName(fname);
                        
//如果类不为空并且继承了TestCase
                        if(cla != null && TestCase.class.equals(cla.getSuperclass())){                            
                            ts.addTestSuite(cla);
                        }

                    }
 catch (ClassNotFoundException e) {
                        
throw new RuntimeException(e);
                    }

                }

            }

        }

        
return ts;
    }

}

 

 

你可能感兴趣的:(junit,测试,class,import,框架,file)