这是我要测试的方法。我为这个方法写了一个测试,它通过了。但是,我故意插入了一个错误,测试仍然通过了。
public void sell (User myUser, String item) {
if(myUser.getRole() == Roles.CASHIER) {
for(Product inventory : inventories) {
if(inventory.getName().equals(item) && inventory.getPrice() <= myUser.getBalance() ) {
System.out.println("sale successful");
inventories.remove(inventory);
}
else {
System.out.println(item + " is out of stock!");
}
}
} else {
System.out.println("Staff member can't purchase goods");
}
}
这是我写的测试,尽管方法中有故意的错误,但它通过了所有的案例。我是J单元的新手,所以我甚至不确定我做得对不对。
@Test
void reStock() {
if(myUser.getRole() == Roles.CASHIER) {
Assertions.assertEquals(myUser.getRole(), Roles.CASHIER);
Assertions.assertNotNull(inventories, "Store stock must not be empty");
for(Product inventory : inventories) {
if(inventory.getName().equals(item) && inventory.getPrice() <= myUser.getBalance() ) {
Assertions.assertEquals(inventory.getName(), item);
Assertions.assertTrue(inventory.getPrice() <= myUser.getBalance(), "Balance should not be less than the price of the item");
int len = inventories.size();
inventories.remove(inventory);
Assertions.assertNotEquals(len, (len - 1));
}
else {
System.out.println(item + " is out of stock!");
}
}
}
else {
System.out.println("Staff member can't purchase goods");
}
}
1条答案
按热度按时间kjthegm61#
如果您从不抛出异常,则您的测试将永远不会失败:)
这是我会重构你的代码:
现在我们可以测试一个有效的销售它:
这段代码并不优雅,但它应该给予您了解测试方法的意义。