JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.
JUnit是一个回归测试框架,用于编写和运行可重复的测试。它有以下特性:
1、用于测试期望结果的断言(Assertion)。2、用于共享共同测试数据的测试工具。3、用户方便的组织和运行测试的测试套件。4、图形和文本的测试运行器。
本篇博客通过一个简单的实例来展示JUnit3用于测试期望结果的断言这一特性,一个例子足以。
1、建立一个Java Program,引入JUnit的jar包,新建一个名为test的Source Folder,把那些测试类都放在这个文件夹下。
2、新建一个Package,将测试类和需要测试的目标类全部放在一个包里,需要给测试用类已Test为开头或结尾来命名,以区分和联系目标类。
3、展示例子:
(1)首先建立一个简单到不能再简单的目标类。命名为UserManager.class.
2 3 import javax.management.RuntimeErrorException; 4 5 public class UserManager { 6 /** 7 * 一个简单的虚拟用户添加方法 8 * @author 巨亚红 9 * @date 2014-4-14 下午3:58:5110 * @版本 V1.0 作者: 时间: 修改:11 * @param userName12 */13 public void addUser(String userName){14 15 System.out.println("userManger.addUser");16 //throw new RuntimeException();17 }18 /**19 * 一个简单的虚拟用户删除方法20 * @author 巨亚红21 * @date 2014-4-14 下午3:59:2322 * @版本 V1.0 作者: 时间: 修改:23 * @param userName24 */25 public void deleteUser(String userName){26 27 System.out.println("userManger.deleteUser");28 }29 /**30 * 一个简单的虚拟根据用户ID查找用户的方法31 * @author 巨亚红32 * @date 2014-4-14 下午3:59:4333 * @版本 V1.0 作者: 时间: 修改:34 * @param userId35 * @return36 */37 public String findUserById(String userId){38 return "Jessica";39 }40 }
(2)添加或编写测试类。如果使用My Eclipse,可以直接在目标类右击---添加----JUnit Test Case,然后就会弹出相应的页面,可以选择New JUnit3 test 也可以选择New JUnit 4 test。我们本博客讲JUnit3,所以选3。编写UserManagerTest.java测试类如下,重要的是先要继承TestCase.java类
2 3 4 import junit.framework.TestCase; 5 6 //继承TestCase类很重要 7 public class UserManagerTest extends TestCase { 8 /** 9 * 测试addUser方法10 * @author 巨亚红11 * @date 2014-4-14 下午4:07:2812 * @版本 V1.0 作者: 时间: 修改:13 */14 public void testAddUser(){15 UserManager userManager=new UserManager();16 userManager.addUser("Jessica");17 System.out.println("UserManagerTest.testAddUser");18 19 }20 /**21 * 测试deleteUser方法22 * @author 巨亚红23 * @date 2014-4-14 下午4:07:4624 * @版本 V1.0 作者: 时间: 修改:25 */26 public void testDeleteUser(){27 UserManager userManager=new UserManager();28 userManager.deleteUser("Jessica");29 System.out.println("UserManagerTest.testDeleteUser");30 31 }32 /**33 * 测试findUserById方法34 * @author 巨亚红35 * @date 2014-4-14 下午4:07:5936 * @版本 V1.0 作者: 时间: 修改:37 */38 public void testFindUserById(){39 UserManager userManager=new UserManager();40 String userName=userManager.findUserById("000");41 42 System.out.println("UserManagerTest.testFindUser----userName="+userName);43 //定义你的期望值44 String excepted="Jessica";45 //如果期望值为Juyahong,JUnit就会提示报错。46 //String excepted="Juyahong";47 this.assertEquals(excepted, userName);48 49 }50 }
通过this.assertEquals(expected, actual)来测试预期结果与实际结果是否匹配,如果匹配,JUnit就会显示绿色,如果不一样就提示红色。
正确:
错误:
当然现在已有JUnit4,它与JUnit3的区别有以下几点:
1. JUnit4利用了 Java 5 的新特性"注释",每个测试方法都不需要以testXXX的方式命名,运行时不在用反射机制来查找并测试方法,取而带之是用@Test来标注每个测试方法,效率提升 2. JUnit4中测试类不必继承
TestCase
了,另外要注意JUnit4和JUnit3引入的包完全不同。
PS:在Eclipse中要使用Junit的话,必须要添加Junit的library。 3.JUnit4和JUnit3在测试Suite时也有很大不同,即在测试套件时它们有区别,JUnit4在测试套件时,必须构造一个空类,而且使用Annotation的形式,即@RunWith(Suite.class)@Suite.SuiteClasses({ShoppingCartTest.class,ProductTest.class}),而JUuni3则是普通的直接用函数调用,添加Suite。
下篇博客将详细讲述JUnit4的详细使用,看看它的进步之处在哪里。