标签: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; } }
标签:style blog io ar os 使用 sp java for
原文地址:http://www.cnblogs.com/silence-hust/p/4116572.html