jUnit测试

java中的测试,不单单是我们自己手写的一种main的主线程进行的测试,而且这一种的测试存在有一定的局限性,简单的认识一个java中的测试的jUnit的操作;

jUnit的操作使用的时候,可以有两种方式,一种是我们直接的把我们自己写的测试类实现一个继承的操作,另一种的方式是需要我们的java测试类使用注解的方式,个人认为其本质还是一样子的,只是我们程序员在使用的时候,使用注解的方式代码量少而已。注解的方式我们也是可以知道的,其和hibernate等操作类似的,是一个利用的反射机制的操作。下面简单的认识我们的测试:

一、简单的基本测试:

创建一个项目,java项目就可以使用的,在项目中建立几个测试的用例:

1、UserDao

package com.fww.test;

/**
* @author fu
*模拟实现的一个方法用于进行测试的类。
*/
public class UserDao {
    public void add(){
        System.out.println("add方法的测试!");
    }
}

2、TeaDao

package com.fww.test;

/**
* 模拟实现的一个测试的类,用于测试
* @author fu
*
*/
public class TeaDao {
    public int del(int a, int b) {
        //在控制台打印信息用于检测我们的测试程序已经执行到方法的内部
        System.out.println("del");
        return a + b;
    }
}

在我们的项目中导入jUnit依赖的jar包(这里使用的是4.4的版本):junit-4.4.jar

然后再我们的项目中和创建一个source folder的文件夹,建立完成以后可以知道我们的这个文件和src是并行的处于同一目录下,在其中创建我们的测试的用例,规范的操作是建立一些包名和需要进行的测试的类名称一致的包名,建立我们的类的时候可以建立一个“类名+Test”的形式的测试类,如:

3、UserTeaDaoTest

package com.fww.test;

import junit.framework.Assert;
import junit.framework.TestCase;

/**
* 针对userdao和teadao的测试使用的一个类
* @author fu
*
*/
public class UserTeaDaoTest extends TestCase {
    // 引用一个userdao
    private UserDao dao = new UserDao();
    // 引用一个teadao
    private TeaDao teaDao = new TeaDao();

    // 测试时候的方法的名字是固定的,是一个“test+方法名”的形式
    public void testAdd() {
        dao.add();
    }

    public void testDel() {
        int a = 1;
        int b = 9;
        // 我们自己的断言的一个数值的说明
        int expected = 11;
        // 实际程序运行时候的数值
        int actual = teaDao.del(a, b);
        // 测试断言的正确性
        Assert.assertEquals(expected, actual);
        // return 0;
    }

}

上述的测试的类实现的是一个在一个类中对两个类的测试的操作,我们在实际测试的时候,可以适当的分开进行测试,如此一个基本的测试块建立完成,我们可以运行我们的测试类了,下面会有相应的提示,我们的测试runs   errors  failures

以上是一个测试两个小模块的操作,我们可以把多个类似以上的测试操作整合到一个类中去进行一个集中的测试,如下:

4、MainTest

package com.fww.test;

import junit.framework.Test;
import junit.framework.TestSuite;

/**
* 进行的是一个测试的整合的操作
*
* @author fu
*
*/
public class MainTest {

    public static Test suite() {

        TestSuite suite = new TestSuite();
        // 测试单个用例
        suite.addTestSuite(UserTeaDaoTest.class);
        // 可以添加多个测试用例进行测试,添加的方法和上述的是一致的。
        //下面的注释说明的是测试一个的testClass的下面的所有子类的测试类
        // suite.addTestSuite(testClass);
        return suite;
    }
}

运行以后是和我们的测试一样的效果的。

二、实现的是一个注解的方式的测试,测试用例还是之前的两个:

1、UserDao

package com.fww.test;

/**
* @author fu
*用于进行的测试类
*/
public class UserDao {
   
    public void add(){
       
        System.out.println("add方法的测试!");
    }
}

2、TeaDao

package com.fww.test;

/**
* @author fu
*用于进行的测试类
*/
public class TeaDao {
    public int del(int a, int b) {
        System.out.println("del");

        return a + b;
    }
}

3、一个小的模块的测试,UserTeaDaoTest

package com.fww.test;

import org.junit.Test;

import junit.framework.Assert;
import junit.framework.TestCase;

/**
* @author fu
*使用注解的方式实现的java的测试
*测试的类是不需要进行继承操作
*/
public class UserTeaDaoTest {

    private UserDao dao = new UserDao();
   
    private TeaDao teaDao = new TeaDao();
    /**
     * 在测试的方法之前添加一个注解,告诉程序下面的代码是一个测试的方法
     * 方法名还是“test+方法名”的形式
     */
    @Test
    public void testAdd(){
        dao.add();
    }
    @Test
    public void testDel(){
        int a = 1;
        int b = 9;
        int expected = 10;
       
        int actual= teaDao.del(a, b);
       
        Assert.assertEquals(expected, actual);
//        return 0;
    }
    
}

4、注解的小的整体测试:

package com.fww.test;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

/**
* @author fu
* 在类的声明之前进行一个注解,使用runwith suite
* 之后就是把我们需要进行的测试的类的类放置到我们的测试suiteclass中去
*/
@RunWith(Suite.class)
@SuiteClasses({
    UserTeaDaoTest.class
})

public class MainTest {

}

以上的注解式的代码同样的是可以实现一个测试的基本的操作的。

你可能感兴趣的:(测试,JUnit)