Java的单元测试(Junit4)
前言:在软件构造学习以及代码实践中学会了使用Junit测试,Junit测试对代码的编写,测试与正确性检测有很大帮助。在此总结一下使用到的Junit相关知识。
1.概念
Java程序最小功能单元是方法,java单元测试就是针对单个java方法的测试。 Junit是一个开源的java语言的单元测试框架,专门针对java语言设计,使用最为广泛,是标准的单元测试框架。
2.单元测试的优点(为什么要使用单元测试)
main方法测试的缺点
只能有一个main方法,且不能把测试代码进行分离。
无法自动与自己预期结果进行比较,需要手动对结果进行判断
相较之下单元测试的优点
将测试代码与程序进行了分离,并且可以保留,方便了代码修改后的回归测试(只要修改对应的方法测试即可)
可以自动化运行所有的测试并获得测试报告。
3.Junit特点
使用断言(Assertion)测试期望结果
常用的开发工具Eclipse集成了Junit
4.断言(Assertion)
要使用断言必须先引入相应的包
import static org.junit.Assert.*;
4.1 断言的常见用法
assertEquals(期望, 实际): 断言相等
例如:assertEquals(2, x)
assertArrayEquals(期望, 实际): 断言数组相等
例如:assertArrayEquals({1, 2, 3}, x)
assertEquals(期望, 实际, 精度): 浮点数组断言相等
例如:assertEquals(3.14159, x, 0.00001)
assertNull(变量): 断言为null
例如:assertNull(str)
assertTrue(语句): 断言为true
例如:assertTrue(x == 20)
assertFalse(语句): 断言为false;
例如:assertFalse(x == 20)
assertNotEquals(期望,实际): 断言不相等
例如:assertNotEquals(30, x)
assertNotNull(语句): 断言不为null
例如:assertNotNull(str)
4.2 @Test
需要导入相应的包
import org.junit.Test;
在写的测试方法前加@Test 就会被当做测试方法执行
示例:
public class Test {
public static int Sum(int a, int b){
return a + b;
}
}
@Test
public void testSum() throws Exception
{
assertEquals(80, Test.Sum(20, 60));
}
4.3 异常测试
我用过的异常测试分为两种
4.3.1 @Test异常测试
异常测试可以通过
@Test(expected=Exception.class),
对可能发生的每种类型的异常进行测试
如果抛出了指定类型的异常, 测试成功
如果没有抛出指定类型的异常, 或者抛出的异常类型不对, 测试失败
示例:
public class Main {
public static void Exception() throws ParseException{
throw new ParseException("", 0);
}
}
public class MainTest {
@Test(expected = ParseException.class)
public void testDataPatternException() throws ParseException {
Main.Exception();
}
}
正常运行
public class Main {
public static void Exception() throws ParseException{
throw new ParseException("", 0);
}
}
public class MainTest {
@Test(expected = NullPointerException.class)
public void testDataPatternException() throws ParseException {
Main.Exception();
}
}
运行失败
4.3.2 @Rule异常测试
导入相关的包
import org.junit.Rule;
import org.junit.rules.ExpectedException;
声明错误期望对象
@Rule
public ExpectedException exception = ExpectedException.none();
期望错误
exception.expect(异常名称.class);
期望错误信息
exception.expectMessage("·····");
示例:
public class Main {
public static void Exception() throws ParseException{
throw new ParseException("测试成功!", 0);
}
}
public class MainTest {
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testParseException() throws ParseException{
exception.expect(ParseException.class);
exception.expectMessage("测试成功!");
Main.Exception();
}
}
运行成功
先期望错误,再执行程序
以上就是我用到的一些基础Junit测试,希望有所帮助。
如有错误,欢迎指正
本文详细介绍了Java的单元测试框架Junit4,包括单元测试的概念、优点、Junit的特点,以及断言的常见用法如assertEquals、assertArrayEquals等。还深入讲解了@Test注解和异常测试,包括@Test异常测试和@Rule异常测试的使用示例。
&spm=1001.2101.3001.5002&articleId=106628683&d=1&t=3&u=980ff6be56384d0294f123aff4febd37)
2837

被折叠的 条评论
为什么被折叠?



