在JUnit中使用@Before方法

时间:2012-02-20 14:44:47

标签: java java-ee junit

我今天早些时候看到了这个问题:Repeating code in JUnit tests。你在开始时如何编写这段代码?您看到有一个方法addDrivingRecord(...)。当你第一次开始写时,这个方法不存在,所以你做了那个测试,确保它有效,然后继续setUp()方法,或者你等到你写了addDrivingRecord(...)方法然后将它重构为@Before?如果需要,我会进一步解释。

1 个答案:

答案 0 :(得分:4)

如果我理解你的询问是否应该:

  1. 在测试方法中使用addDrivingRecord
  2. 确保它变绿(它有效)
  3. 将addDrivingRecord重构为@Before
    1. 在测试方法中使用addDrivingRecord
    2. 将addDrivingRecord重构为@Before
    3. 确保它变绿(它有效)
    4. 如果这是你的问题,我应该选择第一个选项:首先使用方法,然后实现并变为绿色,然后重构你的测试。

      因为两个原因:

      1. 您应该一次测试/实现一件事,因此您将编写一个测试方法。然后你会把它变成绿色。只有这样你才能编写另一种方法并意识到代码可以在@Before中重构

      2. 一个好的做法是编写测试方法,只有当你意识到有共同点时才会将它们移到@Before。这样你就不会在初始化中强制执行不必要的事情。此外,如果您发现另一个测试需要一个非常不同的@Before方法,它可能属于另一个测试类。