【发布时间】:2019-09-05 17:42:05
【问题描述】:
我编写了模拟商店购物篮的程序。用户能够从篮子中添加和删除项目。现在,我想知道我的(void)方法的单元测试应该是什么样子。我正在使用 JUnit 4。
我尝试更改我的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);
}
}
【问题讨论】:
-
欢迎来到 SO!没有看到你的整个班级很难判断,但你能不能只做
basket.addItem(...);,然后在另一行测试你期望改变的条件,Assert.assertEquals(basket.size(), someNewQuantityYouExpected)和/或Assert.assertTrue(basket.contains(newItemYouAdded));等。 -
在测试时如何创建orderedItems 映射?这取决于orderedItems 的创建方式。您可以验证/断言orderedItems 中的值。
标签: java unit-testing testing junit