`
southwolf
  • 浏览: 4125 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Agile Java 笔记 - Lesson02

阅读更多

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进行修改。

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics