【发布时间】:2015-08-17 12:08:01
【问题描述】:
我开始向大型 Java 代码库添加测试。我经常在我正在测试的会话 bean 中看到以下内容:
public OrderDTO getOrderDTO(Long id) {
Order o = (Order)entityManager.find(Order.class, id);
OrderDTO dto = new OrderDTO(o.getId(), o.getCurrency());
return dto;
}
编写单元测试来破坏此代码很容易(发送空或不存在的 id)。当我这样做时,团队的一半开发人员说:
我们不会对所有内容进行错误检查。如果你的参数是垃圾,你很快就会知道!
另一半说:
我们必须将 ifs 添加到 id 和 o 中,如果其中任何一个为 null,则返回 null。
单元测试的目的不就是准确地找出这些问题吗? (是的,我在征求意见!)
是的,从 Long 切换到 long 会删除一个 if。
【问题讨论】:
标签: java unit-testing junit stateless-session-bean defensive-programming