我们都知道,在合作开发中,我们写的类是要给别人用的,那么会不会有Bug呢?显然,我们需要测试。在之前的学习中,一般我们都是写个main方法进行测试。
先分析一下用main方法测试的几个弊端:
1. 不能有组织地运行。(解释一下,就是说不能有效地控制测试哪些方法,有人就要说了,我就在main方法里把要测试的方法都测试一下呗。是可以,但是项目大了呢,创建一堆对象,再调用N个方法,估计自己看了都晕了)
2.需要人为地去判断一个个运行结果是否正确。(估计测试了十几个方法就看晕了)
JUnit就可以弥补这些弊端。JUnit是一个非常常见的单元测试框架,利用它可以很容易地组织几套测试用例。
一个简单的例子:

T 类是要测试的类:
- package org.htnecro.junit4;
- public class T {
- public int plus(int x, int y) {
- return x + y;
- }
- public int minus(int x, int y) {
- return x - y;
- }
- }
将测试代码写在一个新的Source folder—test里面与源码分离开,新建Junit Test Case—TTest 类:
- package org.htnecro.junit4;
- import static org.hamcrest.Matchers.greaterThan;
- import static org.hamcrest.Matchers.*;
- import static org.junit.Assert.assertThat;
- import org.junit.Test;
- public class TTest {
- @Test
- public void testPlus() {
- int z=new T().plus(2, 2);
- assertThat(z,is(4));
- }
- @Test
- public void testMinus() {
- int z=new T().minus(5, 3);
- assertThat(z, greaterThan(1));
- }
- }
assertThat(actual, matcher)是JUnit4的一个新方法,之前常用的是assertEquals()方法,actual参数就是实际值,macher的意思是匹配,可以看到引入的包中有个hamcrest,hamcrest是一个书写匹配器对象时允许直接定义匹配规则的框架。
@Test 是JUnit4 Annotation注解,当然还有一些其他的注解。
Run as JUnit Test:

Errors:0 Failures:0 测试正确。
Junit可以分开组织需要测试方法。可以测试单个的方法,也可以测试一个类的,一个包下的,甚至一个项目下的所有方法。而且很易于重用和修改。
本文介绍使用JUnit进行单元测试的优点及其实现方式。通过对比main方法测试,JUnit能更有效地组织测试用例,提供自动化判断结果正确性的能力。文章通过一个简单示例展示了如何创建测试类并运行测试。

181

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



