如何测试或根本不测试将其他数据模型/结构转换为数据模型的类?
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;。
答案 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));
}
}