java void方法的单元测试应该是什么样子?
我写了一个程序来模拟商店里的篮子。用户可以从购物篮中添加和删除物品。现在,我想知道我的(void)方法的单元测试应该是什么样子。我正在使用JUnit4
我尝试将addItem
方法更改为返回布尔类型,而不是什么也不返回。有了它,我就可以写简单的Assert.assertTrue(basket.add...)
。但是我不知道,void方法的单元测试应该如何编写
public boolean addItem(Item item) {
if (orderedItems.containsKey(item)) {
Integer currItemCount = orderedItems.get(item);
orderedItems.replace(item, currItemCount, currItemCount + 1);
return true;
} else {
orderedItems.put(item, 1);
return true;
}
}
public void addItem(Item item) {
if (orderedItems.containsKey(item)) {
Integer currItemCount = orderedItems.get(item);
orderedItems.replace(item, currItemCount, currItemCount + 1);
} else {
orderedItems.put(item, 1);
}
}
# 1 楼答案
请注意,布尔值在第一个版本中是无效的,因为它总是返回
true
。此外,添加布尔值实际上不会帮助您对代码进行单元测试,因为这太肤浅了。 所以你应该坚持你原来的想法(没有布尔值)关于您的问题:是的
addItem()
方法不会返回任何内容,但是如果您可以在篮子中添加项目,您很可能也希望阅读它们测试
add()
的最简单方法是依赖get()/find()
方法反之亦然
对于篮子中不存在的项目,您可以编写类似的测试:
当然,您应该编写其他测试场景