码迷,mamicode.com
首页 > 其他好文 > 详细

JUnit单元测试--小试牛刀

时间:2014-11-23 15:50:41      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   os   使用   sp   java   for   

单元测试更多的是在开发阶段完成,开发人员每写一个函数的时候都会写相应的单元测试。对于java代码,普遍使用的是jUnit,根据jUnit可以自己相应的开发一套自动化测试框架。这个的前提是要学会junit,先知道怎么用,才能知道怎么为我所用。

学习JUnit的操作很简单,JUnit是一个敏捷编程的开发框架,他的设计很值得学习。这也是我学习JUnit的原因。

 

JUnit最大的特点就是:各个方法之间是独立的,一个方法的失败不会影响另一个方法的执行。

 

为了更好地理解junit测试用例,我找了一个简单的例子来练习:

例如有这么一个类Greeting,根据每天不同的时间来返回不同的问候语:

package com.test.one;
 
public class Greeting {
    public static final String GREETING_MORNING = "Good Morning Sunshine!";
    public static final String GREETING_AFTERNOON = "Just a few more hours before quiting time!";
    public static final String GREETING_EVENING = "I am outta here";
    public static final int MAX_HOUR_MORNING = 12;
    public static final int MAX_HOUR_AFTERNOON = 17;
 
    private java.sql.Timestamp iGreetingTime = null;
 
    public Greeting(){
        this(System.currentTimeMillis());
    }
    public Greeting(long greetingTime) {
        super();
        iGreetingTime = new java.sql.Timestamp(greetingTime);
    }
    public String getGreeting(){
 
        if(iGreetingTime.getHours()<MAX_HOUR_MORNING){
            return GREETING_MORNING;
        }else if (iGreetingTime.getHours()<MAX_HOUR_AFTERNOON) {
            return GREETING_AFTERNOON;
        }else {
            return GREETING_EVENING;
        }
 
    }
 
}

  

我们需要测试这个类,看是否可以根据时间的不同,来呈现不同的问候语。创建junit的测试用例需要遵循一下几点:

1、Junit类需继承TestCase

2、setUp()和setDown()为每个方法准备或销毁测试装备

3、创建public的方法,方法名为test开头,如testMorningGreeting(),使用assert判断实际返回的值和期望值

4、super(testMethod)为每个测试方法生成实例。首先执行setUp(),然后执行testMethod ,最后执行tearDown()。

package com.test.test;
 
import java.sql.Time;
 
import com.test.one.Greeting;
 
import junit.framework.TestCase;
 
public class GreetingTest extends TestCase {
 
    protected void setUp() throws Exception {
        super.setUp();
    }
 
    protected void tearDown() throws Exception{
        super.tearDown();
    }
 
    public void testMorningGreeting() throws Exception {
        Time time = new Time(9, 0, 0);
        Greeting greeting  = new Greeting(time.getTime());
        assertEquals("the morning greeting expected", Greeting.GREETING_MORNING, greeting.getGreeting());
    }
    public void testAfternoonGreeting() throws Exception {
        Time time = new Time(12, 0, 0);
        Greeting greeting  = new Greeting(time.getTime());
        assertEquals("the Afternoon greeting expected", Greeting.GREETING_AFTERNOON, greeting.getGreeting());
    }
    public void testEveningGreeting() throws Exception {
        Time time = new Time(18, 0, 0);
        Greeting greeting  = new Greeting(time.getTime());
        assertEquals("the Evening greeting expected", Greeting.GREETING_EVENING, greeting.getGreeting());
    }
 
    public GreetingTest(String testMethod){
        super(testMethod);
    }
}

 

这个只是单个测试用例,junit也提供了测试套件组织想要执行的测试用例。

如果你已经有了两个测试用例,AddJobCmdImpTest、RemoveJobCmdImpTest等TestCase的子类别,如果想一次运行这两个测试,需要使用AllTest的类,代表一个测试套件。

public class AllTest {
    public static Test suite(){
        TestSuite suite = new TestSuite("Test for XXXX");
        suite.addTest(new TestSuite(AddJobCmdImpTest.class));
        suite.addTest(new TestSuite(RemoveJobCmdImpTest.class));
        return suite;
    }
}

  

JUnit单元测试--小试牛刀

标签:style   blog   io   ar   os   使用   sp   java   for   

原文地址:http://www.cnblogs.com/silence-hust/p/4116572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!