Java 从JUnit测试用例调用方法失败
我有一个问题: 我在JUnit测试用例中有这样一个方法:Java 从JUnit测试用例调用方法失败,java,junit,Java,Junit,我有一个问题: 我在JUnit测试用例中有这样一个方法: @Test public void test1st_scenario() { out = Mockito.mock(PrintStream.class); System.setOut(out); restaurant = new Restaurant(); employee = new Employee(null, null, null); ArrayList<Employee> e
@Test
public void test1st_scenario() {
out = Mockito.mock(PrintStream.class);
System.setOut(out);
restaurant = new Restaurant();
employee = new Employee(null, null, null);
ArrayList<Employee> employees = new ArrayList<Employee>();
employees.add(new Employee("Luciano", "chef", ExperienceLevel.LOW));
employees.add(new Employee("Naved", "waiter", ExperienceLevel.LOW));
employees.add(new Employee("Fabrizio", "waiter", ExperienceLevel.LOW));
employees.add(new Employee("Amnir", "waiter", ExperienceLevel.LOW));
employees.add(new Employee("Abel", "barman", ExperienceLevel.LOW));
restaurant.setBudget(10000);
employee.increaseExperience(employees, 1, "Luciano");
Mockito.verify(out).println("The chef experience level increased");
Assert.assertEquals(8800, restaurant.getBudget());
}
@测试
公共void test1st_场景(){
out=Mockito.mock(PrintStream.class);
系统放样;
餐厅=新餐厅();
员工=新员工(空,空,空);
ArrayList employees=新的ArrayList();
添加(新员工(“卢西亚诺”,“厨师”,体验级别低));
添加(新员工(“导航”、“服务员”、体验级别低));
添加(新员工(“Fabrizio”,“服务员”,ExperienceLevel.LOW));
添加(新员工(“Amnir”、“服务员”、ExperienceLevel.LOW));
添加(新员工(“Abel”、“barman”、“ExperienceLevel.LOW”);
餐厅。setBudget(10000);
员工。增加经验(员工,1名,“Luciano”);
Mockito.verify(out).println(“厨师经验等级提高”);
Assert.assertEquals(8800,restaurant.getBudget());
}
Employee类中的increaseExperience方法为:
public void increaseExperience(ArrayList<Employee> employees,
int numberOfEmployee, String employeeName) {
restaurant = new Restaurant();
String[] parts = employeeName.split(",");
for (int i = 0; i < numberOfEmployee; i++)
{
for (int a = 0; a < employees.size(); a++)
{
if (employees.get(a).name.equals(parts[i]))
{
if (employees.get(a).job.equals("chef") || employees.get(a).job.equals("barman"))
{
if (employees.get(a).experience.equals(ExperienceLevel.LOW) || employees.get(a).experience.equals(ExperienceLevel.MEDIUM))
{
if (restaurant.getBudget() >= 1200)
{
restaurant.setBudget(restaurant.getBudget() - 1200);
if (i == 0)
System.out.println("The " + employees.get(a).job + " experience level is increased");
else
System.out.println(" and the " + employees.get(a).job + " experience level is increased");
}
else
{
if (i == 0)
System.out.println("The " + employees.get(a).job + " experience level is failed to increase");
else
System.out.println(" and the " + employees.get(a).job + " experience level is failed to increase");
}
}
else if (employees.get(a).experience.equals(ExperienceLevel.HIGH))
{
if (i == 0)
System.out.println("The " + employees.get(a).job + " experience level is increased");
else
System.out.println(" and the " + employees.get(a).job + " experience level is increased");
}
}
else if (employees.get(a).job.equals("waiter"))
{
if (employees.get(a).experience.equals(ExperienceLevel.LOW) || employees.get(a).experience.equals(ExperienceLevel.MEDIUM))
{
if (restaurant.getBudget() >= 800)
{
restaurant.setBudget(restaurant.getBudget() - 800);
if (i == 0)
System.out.println("The " + employees.get(a).job + " experience level is increased");
else
System.out.println(" and the " + employees.get(a).job + " experience level is increased");
}
else
{
if (i == 0)
System.out.println("The " + employees.get(a).job + " experience level is failed to increase");
else
System.out.println(" and the " + employees.get(a).job + " experience level is failed to increase");
}
}
else if (employees.get(a).experience.equals(ExperienceLevel.HIGH))
{
if (i == 0)
System.out.println("The " + employees.get(a).job + " experience level is increased");
else
System.out.println(" and the " + employees.get(a).job + " experience level is increased");
}
}
}
}
}
}
public void increaseExperience(ArrayList员工、,
int numberOfEmployee,字符串employeeName){
餐厅=新餐厅();
String[]parts=employeeName.split(“,”);
for(int i=0;i=1200)
{
restaurant.setBudget(restaurant.getBudget()-1200);
如果(i==0)
System.out.println(“增加了“+employees.get(a).job+”经验级别”);
其他的
System.out.println(“并且“+employees.get(a.job+”的经验级别增加”);
}
其他的
{
如果(i==0)
System.out.println(“员工+employees.get(a.job+”经验等级提升失败”);
其他的
System.out.println(“且“+employees.get(a.job+”经验等级未能提高”);
}
}
else if(employees.get(a).experience.equals(ExperienceLevel.HIGH))
{
如果(i==0)
System.out.println(“增加了“+employees.get(a).job+”经验级别”);
其他的
System.out.println(“并且“+employees.get(a.job+”的经验级别增加”);
}
}
else if(employees.get(a.job.equals)(“服务员”))
{
if(employees.get(a).experience.equals(ExperienceLevel.LOW)| employees.get(a).experience.equals(ExperienceLevel.MEDIUM))
{
if(restaurant.getBudget()>=800)
{
restaurant.setBudget(restaurant.getBudget()-800);
如果(i==0)
System.out.println(“增加了“+employees.get(a).job+”经验级别”);
其他的
System.out.println(“并且“+employees.get(a.job+”的经验级别增加”);
}
其他的
{
如果(i==0)
System.out.println(“员工+employees.get(a.job+”经验等级提升失败”);
其他的
System.out.println(“且“+employees.get(a.job+”经验等级未能提高”);
}
}
else if(employees.get(a).experience.equals(ExperienceLevel.HIGH))
{
如果(i==0)
System.out.println(“增加了“+employees.get(a).job+”经验级别”);
其他的
System.out.println(“并且“+employees.get(a.job+”的经验级别增加”);
}
}
}
}
}
}
但是,当我在JUnit测试方法中将预算设置为10000时,我不能将其设置为8800。但我还是得到了10000英镑。调用increaseExperience方法可能失败
我怎样才能解决它
谢谢 这就是问题所在,就在您的
increaseExperience
方法的开头:
restaurant = new Restaurant();
您在方法中使用的餐厅与测试中使用的餐厅完全不同
也许你应该把餐厅作为另一个参数来传递?或者员工应该知道他们工作的餐厅
(也不清楚为什么你在没有有用信息的情况下调用
员工的increaseExperience
——听起来要么它应该是员工
上的一个实例方法,要么它应该是餐厅
上的一个实例方法,此时你应该删除它。)restarant
变量,或者它应该是Employee
上的一个静态方法,因为它作用于许多员工,而不仅仅是一名员工……从根本上说,我认为您需要重新审视您的设计。)似乎更可能是您调用的代码中的一个错误。我建议您停止模仿的