TestSuite 的使用

首先说一下,suite ,中文是 一套,一组 的意思。

那么,TestSuite,顾名思义,,就是用来运行一组测试的。

如何使用呢 ?

假设有个这样的测试类StudentDAOTest ,代码如下:

1 package org.young.junit.testsuite; junit.framework.TestCase; org.young.junit.testsuite.dao.StudentDAO; 6 import org.young.junit.testsuite.dao.StudentDAOImpl; 7 import org.young.junit.testsuite.entity.Student;StudentDAOTest extends TestCase { StudentDAO dao;* 创建 DAO 实例 setUp() {17dao = new StudentDAOImpl();18 } testAdd() {21Student stu = new Student();2223 dao.add(stu);24 } testDelete() {2728dao.delete(“id”);29 } testUpdate() {32Student stu = new Student();3334 dao.update(stu);35 } testLoadWithId() {3839Student stu = dao.load(“xyz”);4041 assertNotNull(stu);42 } testLoadWithNullOrEmptyStr() {4546Student stu = dao.load(“”);47 assertNull(stu);4849stu = dao.load(null);50 assertNull(stu);51 }52 53 }

如果想一次执行几个方法,而不是所有方法改怎么办呢?

TestSuite 该上场了。

为了方便比较,再来一个测试类CourseDAOTest ,代码如下:

1 package org.young.junit.testsuite; org.junit.Before; 4 import org.junit.Test; 5 import org.young.junit.testsuite.dao.CourseDAO; 6 import org.young.junit.testsuite.dao.CourseDAOImpl; 7 import org.young.junit.testsuite.entity.Course; junit.framework.TestCase;10 import junit.framework.TestSuite; * Suite 的实现方式一14 * 15 *public static Test suite(){} 的方式16 * by Young.ZHU18 *on 2013-9-3019 *20 * Package&FileName: org.young.junit.testsuite.CourseDAOTestCourseDAOTest extends TestCase { CourseDAO dao; CourseDAOTest() {27super();28 } CourseDAOTest(String name) {31super(name);32 }33 34 @OverridesetUp() throws Exception {36super.setUp();3738dao = new CourseDAOImpl();39 }* 注意:继承 TestCase 后,JUnit 4 里的 @Before 、@Test 等注解就没用了43 * 44 * @Before 的功能可由方法 setUp() 实现 @Before init() {48System.out.println(“fsdfsdf”);49dao = new CourseDAOImpl();50 }* 执行这个测试类的部分方法54 * 55 * 方法头必须是这样的 public static junit.framework.Test suite()56 * 即,静态(static) 的57 * junit.framework.Test suite() {61TestSuite suite = new TestSuite();* 字符串参数为想要执行的该测试类的方法suite.addTest(new CourseDAOTest(“testLoad”));67suite.addTest(new CourseDAOTest(“testAdd”)); suite;70 }71 72 @Test testAdd() {74Course course = new Course();7576 dao.add(course);77 }78 79 @Test testDelete() {81fail(“Not yet implemented”);82 }83 84 @Test testUpdate() {86fail(“Not yet implemented”);87 }88 89 @Test testLoad() {91Course course = dao.load(“course_id”);9293 assertNotNull(course);94 }95 96 }

先运行一下,看下效果:

虽然这个测试类写了增(add)、删(delete)、改(update)、查(load),但实际执行的只有两个方法 —— testLoad 和 testAdd 。

秘密就在于代码第 60 行的suite() 方法,这个方法决定了该测试类执行哪些方法。

有两点需要说明:

1、关于方法suite() 的方法头

正如注释里写道的,这个方法的方法头是固定的

junit.framework.Test suite() {}

2、测试类的构造方法

测试类CourseDAOTest 中第 30 行带参数的构造函数,在 66 行和 67 行用到了。

构造函数的参数即要执行的测试方法的名称。

最后,把两个集合起来看,测试类AllTest ,代码如下:

逆境磨练人、逆境是老师、逆境之苦可变甜。

TestSuite 的使用

相关文章:

你感兴趣的文章:

标签云: