测试开发驱动是一种以单元测试为基础的极限编程方法。一下是一个测试示例: 被测的类: import java.util.StringTokenizer; /* * 日期格式化程序,将输入的日期字符串格式化为MM-DD-YYY * 需求: * 输入为null或者"",输出为"" * 输入只有一个数字的日期或月份,高位补0 * 对于两位数字的年份,高位补20 * 其他,返回"" */ public class DateFormat { public String format(String strUnFormated){ System.out.println(strUnFormated); //输入的字符串 //如果输入为null,返回'' String strTemp=((strUnFormated==null)?"":strUnFormated); if(!strTemp.equals("")){ if(!strTemp.matches("//d{1,2}-//d{1,2}-//d{2,4}")) return ""; StringTokenizer st=new StringTokenizer(strTemp,"-"); String strMM=st.nextToken(); String strDD=st.nextToken(); String strYY=st.nextToken(); if(strMM.length()<2&&Integer.parseInt(strMM)<10){ strMM="0"+strMM; } if(strDD.length()<2&&Integer.parseInt(strDD)<10){ strDD="0"+strDD; } if(strYY.length()<4&&Integer.parseInt(strYY)<100){ strYY="20"+strYY; } strTemp=strMM+"-"+strDD+"-"+strYY; } return strTemp; } } 测试用例: package cn.csu.unitTest; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.swingui.TestRunner; import cn.csu.myClass.DateFormat; public class DateFormatTest extends TestCase { private static final String FAILURE_MSG="测试失败"; private DateFormat dateFormat=new DateFormat(); //引入被测试对象,实例化 public static void main(String[] args){ /* * 该方法提供一个JUnit的Swing GUI呈现 */ TestRunner.run(DateFormatTest.class); } public static Test suite(){ TestSuite ts=new TestSuite("测试DateFormat"); /* * JUnit框架TestSuite Class有个特殊的构造函数 * 它接受一个class作为参数,创建出来的test suite会将class内所有以"test" * 开头的方法当做test case包含进来 */ ts.addTestSuite(DateFormatTest.class); return ts; } /* * 根据传入内容显示测试失败的响应信息 */ private String errorMesgTitle(String msgs){ return msgs+" "+FAILURE_MSG; } /* * 测试输入null是否返回'' */ public void testIfNullReturnEmptyStr1(){ assertEquals(errorMesgTitle("输入null返回''"), "",dateFormat.format(null)); } /* * 测试输入''是否返回'' */ public void testIfEmptyReturnEmptyStr2(){ assertEquals(errorMesgTitle("输入''返回''"), "",dateFormat.format("")); } /* * 测试是否给只有一位数字的日期在高位补0 */ public void testAppendZeroSingleD(){ assertEquals(errorMesgTitle("输入一位数字的日期在高位补0"), "11-01-2006",dateFormat.format("11-1-2006")); } /* * 测试是否给只有一位数字的月份在高位补0 */ public void testAppendZeroSingleM(){ assertEquals(errorMesgTitle("输入一位数字的月份在高位补0"), "01-11-2006",dateFormat.format("1-11-2006")); } /* * 测试是否给两位数的年份在高位补20 */ public void testAppend20YearOfYYStyle(){ assertEquals(errorMesgTitle("输入两位数字的年份在高位补20"), "11-01-2006",dateFormat.format("11-01-06")); } /* * 测试输入非法格式 */ public void testCorrectSeparateValue(){ assertEquals(errorMesgTitle("输入非法字符"), "",dateFormat.format("1,1,2006")); } public void testCorrectNumericValue(){ assertEquals(errorMesgTitle("输入非法字符"), "",dateFormat.format("A-B-06")); } /* * 其他测试.... */ }