Agile Java 书中的例子用JUnit 3 写成, 学习过程中顺便应用一下JUnit 4。
Lesson 2 - Suites 一节
import junit.framework.TestSuite;
public class AllTests {
public static TestSuite suite() {
junit.framework.TestSuite suite =
new junit.framework.TestSuite();
suite.addTestSuite(StudentTest.class);
suite.addTestSuite(CourseSessionTest.class);
return suite;
}
}
由于JUnit4 添加了Annotation支持 简化了TestSuite的写法 。 只需如此:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({StudentTest.class, CourseSessionTest.class})
public class AllTests { }
The setUp Method 一节
TestCase中测试方法公用的初始化代码放在setUp()中
public class CourseSessionTest extends TestCase {
private CourseSession session;
@Override
public void setUp() {
session = new CourseSession("ENGL", "101");
}
//...
}
对JUnit4 初始化方法的名字可以任选,只要使用@Before指明”这是执行test之前需要运行的代码“即可
public class CourseSessionTest {
private CourseSession session;
@Before
public void anyMethod() {
session = new CourseSession("ENGL", "101");
}
//...
}
Caution!session本来是在测试方法内初始化的,抽出来以后记得把那些方法里的CourseSession session改掉…
More Refactoring 一节
测试代码中引入的List 就是对实现代码的一种设计, 最终还要引入到生产代码中去。
保持良好的封装,与客户代码减少耦合——测试代码中并不需要得到allStudents的List,只是需要list中的各个元素。此时,应该把List的实现代码移入CourseSession类中,只暴露get方法,防止客户代码对这个List进行修改。