JUnit4和JUnit3的区别:
JUnit3的特点:
1.必须继承TestCase
2.测试方法必须以test开头
3.通过assert*判断测试结果
4.采用setUp和TearDown加载初始环境信息和清除相关资源
JUnit4的特点:
1.必须引入org.junit.Test采用注解方式,类开始的时候要标记@Test
2.必须引入类(org.junit.Assert.*)
3.采用@Befor和@After加载或者清除资源
4.提供对异常的测试@Test(expected = "可能抛出的异常")
5.测试响应时间@Test(timeout=1000)(单位:毫秒)
附上一个JUnit4的例子:
目标类:
public class JunitDemo {
/**
* 格式化字符串 如: userName --> user_name
* @param str
* @return
*/
public static String wordFormat(String str) {
if (str == null) {
return null;
}
Pattern pattern = Pattern.compile("[A-Z]");
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
// find()尝试查找与该模式匹配的输入序列的下一个子序列
while (matcher.find()) {
if (matcher.start() != 0) {
// appendReplacement(StringBuffer sb,String
// replacement)实现非终端添加和替换步骤。
// matcher.group()返回由以前匹配操作所匹配的输入子序列。
matcher.appendReplacement(sb, "_" + matcher.group());
}
}
// appendTail(StringBuffer sb)实现终端添加和替换步骤。
return matcher.appendTail(sb).toString().toLowerCase();
}
}
测试类:
public class JunitDemoTest {
// 1.必须有org.junit.Test注解 2.方法必须声明为void
@Test
public void testWordFormat() {
String target = "userName";
String result = JunitDemo.wordFormat(target);
assertEquals("user_name", result);
}
/**
* 测试null情况
* 测试不通过
*/
@Test
public void testWordFormatNull() {
String target = null;
String result = JunitDemo.wordFormat(target);
assertNull(result);
}
/**
* 测试为空的情况
*/
@Test
public void testWordFormatEmpty() {
String target = "";
String result = JunitDemo.wordFormat(target);
assertEquals("", result);
}
/**
* 测试大写字母开头的
*/
@Test
public void testWordFormatBegin() {
String target = "UserSex";
String result = JunitDemo.wordFormat(target);
assertEquals("user_sex", result);
}
/**
* 测试大写字母开头的
*/
@Test
public void testWordFormatEnd() {
String target = "userSeX";
String result = JunitDemo.wordFormat(target);
assertEquals("user_se_x", result);
}
}