单元测试对象转换器

时间:2014-05-01 19:45:33

标签: unit-testing testing

如何测试或根本不测试将其他数据模型/结构转换为数据模型的类?

interface ToTradeObjectConverter<T> {
    public Trade convertToTrade (T source);
}

public class Trade {
    // here we have ~ 100 fields, like dates, account, currencies, etc.
}

转换器只是通过setter填充Trade,从另一个对象获取数据或解析文本或XML等等。

你会测试这样的课程吗?如果是这样,什么是好方法? 我不想模拟(EasyMock)参数并添加100行&#34; easy mock期望正确的getter和setter调用&#34;。

1 个答案:

答案 0 :(得分:3)

如果这些类是自动生成的,或者它们是手写的,但从不对输入做任何有趣的事情(它们只是复制它),如果你有集成覆盖,我就不会测试它们。 (我来自BDD的观点:首先通过验收/集成测试,然后根据需要对其余测试进行单元测试。)

如果这些课程做了一些有趣的事情,并且/或者如果他们没有整合覆盖范围,请对其进行测试。

我绝对不会使用嘲笑。这些似乎是简单的类,它们在内存中完成所有工作。我认为测试这些类没有太多痛苦的秘诀就是给它们所有强大的.equals方法(如果它们还没有它们)。你可以生成它们。然后你的单元测试就像

public class ToTradeObjectConverterTest {
  @Test
  public void convertToTradeReturnsTheExpectedObject() {
    TradeSource source = new TradeSource(/* whatever goes here */);
    Trade trade = new ToTradeObjectConverter<TradeSource>().convertToTrade(source);
    Trade expectedTrade = new Trade(/* whatever goes here */);
    assertThat(expectedTrade, equalTo(trade));
  }
}