被测试类1
class CourseCatalog {
CourseCatalog() {
...
}
void add(Course course) {
...
}
void remove(Course course) {
...
}
Course findCourseWithId(String id) {
...
}
Course[] findCoursesWithTitle(String title) {
...
}
}
被测试类2
class Course {
Course(String id, String title, ...) {
}
String getId() {
...
}
String getTitle() {
...
}
}
添加JUnit的开源包
测试类1(单个类文件测试)
import junit.framework.*;
import junit.swingui.*;
public class TestCourseCatalog extends TestCase {
CourseCatalog cat;
protected void setUp() {
cat = new CourseCatalog();
}
public void testAdd() {
Course course = new Course("c001", "Java prgoramming", ...);
cat.add(course);
assertEquals(cat.findCourseWithId(course.getId()), course);
}
public void testAddTwo() {
Course course1 = new Course("c001", "Java prgoramming", ...);
Course course2 = new Course("c002", "OO design", ...);
cat.add(course1);
cat.add(course2);
assertEquals(cat.findCourseWithId(course1.getId()), course1);
assertEquals(cat.findCourseWithId(course2.getId()), course2);
}
public void testRemove() {
Course course = new Course("c001", "Java prgoramming", ...);
cat.add(course);
cat.remove(course);
assertTrue(cat.findCourseWithId(course.getId()) == null);
}
public static void main(String args[]) {
TestRunner.run(TestCourseCatalog.class);
}
}
assertEquals(X, Y)方法检查X 跟Y 是不是相等(它会调用X 的equals 方法)。如果不相等的话,它会抛出
一个异常。assertEquals 这个方法是由TestCase 类提供的。因为我们的TestCourseCatalog 继承自TestCase,
我们可以直接调用assertEquals。
TestCase 是由JUnit 提供的。在junit.framework 包里。因此,我们需要导入junit.framework.*包。
testAdd,testAddTwo 和testRemove 都要创建一个CourseCatalog 对象。我们要把创建对象的代码放在setUp
方法里。每个测试用例运行的时候,都会调用setUp 方法。
怎么运行所有单元测试明天更新。