【发布时间】:2019-08-06 09:20:46
【问题描述】:
我为自动售货机编写了 SnackType 的枚举类,其中包含数量和价格。我希望每次调用新测试时重新初始化数量。但是,我遇到了一个问题,如果测试改变了数量的值,那么改变的值会转移到下一个测试。
public enum SnackType{
CHIPS(20, 1), CHOCOLATE(20, 2), CHEWING_GUM(20, .5);
int amount;
final double price;
SnackType(int quantity, double price)
{
this.amount = quantity;
this.price = price;
}
public int quantity(){
return this.amount;
}
public double getPrice(){
return this.price;
}
public void subquantity()
{
this.amount -= 1;
}
}
这是我的一些测试示例
@Test
void buying_unavailable_quantity_of_a_snack_should_fail() {
while (snackMachine.chewingGums().quantity() > 0) {
snackMachine.insertMoney(Money.QUARTER_DINAR);
snackMachine.insertMoney(Money.QUARTER_DINAR);
snackMachine.buySnack(SnackType.CHEWING_GUM);
}
insertMoney()不用担心这个功能
buySnack()这个函数减去数量
Money buySnack(SnackType snack){
if(snack.quantity()==0){
throw new IllegalStateException("can't buy snack quantity zero");
}
else if (this.CUSTOMERS_MONEY.value.doubleValue() >= snack.getPrice()){
snack.subquantity();
}
我知道口香糖的数量会在本次测试结束时变为 0,然后测试将失败,但我不希望 0 延续到其他测试。
【问题讨论】:
标签: java class enums initialization