Java的单元测试(Junit4)

本文详细介绍了Java的单元测试框架Junit4,包括单元测试的概念、优点、Junit的特点,以及断言的常见用法如assertEquals、assertArrayEquals等。还深入讲解了@Test注解和异常测试,包括@Test异常测试和@Rule异常测试的使用示例。

前言:在软件构造学习以及代码实践中学会了使用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测试,希望有所帮助。
如有错误,欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值