使用Junit5实现以下SaleMachine类的七个测试方法:
1、如果顾客投入的正好是5角钱,选择“啤酒”,断言“你购买了啤酒,请取饮料”
2、如果啤酒的库存为空,断言“对不起,啤酒库存为空,请取走你的钱”
3、如果顾客投入的正好是5角钱,选择的是这两种之外的其他饮料,断言“输入饮料信息错误!”
4、如果顾客投入1元钱,那么顾客可以在饮料有剩余且有零钱找的情况下得到饮料及找回零钱,断言“你购买了啤酒,请取饮料和找零”
5、如果顾客投入1元钱,但是啤酒已经售完了,那么顾客将拿回自己的钱,得不到啤酒,断言“饮料库存为空,请取回你的硬币”
6、如果顾客投入1元钱,啤酒也有,但是没有零钱找给顾客,那么顾客将拿回自己的钱,得不到饮料,断言“对不起,无法找零,请取走你的钱”
7、如果顾客投入的既不是5角钱,也不是1元钱,断言“硬币输入信息错误!”
public class SaleMachine {
private int _beerNum, _orangeNum, _count_of_five, _count_of_one;
private float _total;
private String[] _type = { "beer", "orange" };
private String _result;
public SaleMachine(int beer, int orange, int five, int one) {
this._beerNum = beer; // 初始化啤酒的库存
this._orangeNum = orange;// 初始化橙汁的库存
this._count_of_five = five;// 初始化5角钱的数量
this._count_of_one = one;// 初始化1元钱的数量
}
// type是用户选择的产品,money是用户投币的种类
public String Operate(String type, int money) {
// float loose_change=0;
if (money == 5) {//如果投入5角钱
if (type.equals(_type[0])) {
//如果用户选择啤酒
if (_beerNum >= 1) {
//如果还有啤酒
_beerNum--;
_count_of_five++;
_result = "你购买了啤酒,请取饮料";
return _result;
} else
return "对不起,啤酒库存为空,请取走你的钱";
} else if (type.equals(_type[1])) {
//如果用户选择橙汁
if (_orangeNum >= 1) {
_orangeNum--;
_count_of_five++;
_result = "你购买了橙汁,请取饮料";
return _result;
} else
return "对不起,橙汁库存为空,请取走你的钱";
} else
return "输入饮料信息错误!";
} else if (money == 1) {
if(_beerNum <=0 || _orangeNum <=0) {
return "饮料库存为空,请取回你的硬币!";
}
//如果用户投入一元钱
else if (type.equals(_type[0]) && _beerNum >= 1) {
//如果用户选择啤酒且还有啤酒
if (_count_of_five >= 1) {
//如果有零钱找
_beerNum--;
_count_of_five--;
_count_of_one++;
_result = "你购买了啤酒,请取饮料和找零";
return _result;
} else
return "对不起,无法找零,请取走你的钱";
} else if (type.equals(_type[1]) && _orangeNum >= 1) {
//如果用户选择橙汁且还有橙汁
if (_count_of_five >= 1) {
_orangeNum--;
_count_of_five--;
_count_of_one++;
_result = "你购买了橙汁,请取饮料和找零";
return _result;
} else
return "对不起,无法找零,请取走你的钱";
}
}
return "硬币输入信息错误!";
}
}
package com.atiguitu.java;
import static org.junit.Assert.*;
import org.junit.Test;
public class SaleMachineTest {
@Test
public void testOne() {
//1、如果顾客投入的正好是5角钱,选择“啤酒”,断言“你购买了啤酒,请取饮料”
SaleMachine buy = new SaleMachine(50,50,50,50);
assertEquals("你购买了啤酒,请取饮料",buy.Operate("beer",5));
}
@Test
public void testTwo() {
//2、如果啤酒的库存为空,断言“对不起,啤酒库存为空,请取走你的钱”
SaleMachine buy = new SaleMachine(0,50,50,50);
assertEquals("对不起,啤酒库存为空,请取走你的钱",buy.Operate("beer",5));
}
@Test
public void testThree() {
//3、如果顾客投入的正好是5角钱,选择的是这两种之外的其他饮料,断言“输入饮料信息错误!”
SaleMachine buy = new SaleMachine(50,50,50,50);
assertEquals("输入饮料信息错误!",buy.Operate("CocaCoal",5));
}
@Test
public void testFour() {
//4、如果顾客投入1元钱,那么顾客可以在饮料有剩余且有零钱找的情况下得到饮料及找回零钱,断言“你购买了啤酒,请取饮料和找零”
SaleMachine buy = new SaleMachine(50,50,50,50);
assertEquals("你购买了啤酒,请取饮料和找零",buy.Operate("beer",1));
}
@Test
public void testFive() {
//5、如果顾客投入1元钱,但是啤酒已经售完了,那么顾客将拿回自己的钱,得不到啤酒,断言“饮料库存为空,请取回你的硬币”
SaleMachine buy = new SaleMachine(0,50,50,50);
assertEquals("饮料库存为空,请取回你的硬币!",buy.Operate("beer",1));
}
@Test
public void testSix() {
//6、如果顾客投入1元钱,啤酒也有,但是没有零钱找给顾客,那么顾客将拿回自己的钱,得不到饮料,断言“对不起,无法找零,请取走你的钱”
SaleMachine buy = new SaleMachine(50,50,0,50);
assertEquals("对不起,无法找零,请取走你的钱",buy.Operate("beer",1));
}
@Test
public void testSeven() {
//7、如果顾客投入的既不是5角钱,也不是1元钱,断言“硬币输入信息错误!”
SaleMachine buy = new SaleMachine(50,50,50,50);
assertEquals("硬币输入信息错误!",buy.Operate("beer",10));
}
}