我正在尝试为项目创建单元测试。在我的项目中,我有一个菜单类和一个 VerticalOptions 类。
我的菜单类有一个私有的 VerticalOptions 对象和一个公共的 handleInput 方法。当我调用我的菜单的 handleInput(key) 方法时,根据我给它的键,它会做不同的事情,即调用我的 VerticalOptions 对象的不同方法。
我想做一个 unitTest 来查看被调用的方法是否正确,我该怎么做?
我已经尝试在我的菜单中添加一个 Mockito 间谍,但是因为我想测试被调用的方法是否是私有 VerticalOptions 对象中的方法,所以它实际上不起作用。
在使用 getVerticalOptions 方法获取它之后,我还尝试将间谍放在 VerticalOptions 对象上,但它也不起作用。
public void handleInput(InputKey key)
{
switch (key) {
case S:
case DOWN:
optionsInterface.cycleDown();
break;
case W:
case UP:
optionsInterface.cycleUp();
break;
case SPACE:
case ENTER:
optionsInterface.select();
break;
default:
break;
}
}
@Test
public void testInput() {
MainMenu menu = new MainMenu(game);
VerticalButtonInterface buttonInterface = menu.getOptionsInterface();
VerticalButtonInterface spy = spy(buttonInterface);
menu.handleInput(InputKey.DOWN);
verify(spy, times(1)).cycleDown();
}
这是我得到的测试失败:
需要但未调用:verticalButtonInterface.cycleDown(); -> 在 MenuTest.testInput(MenuTest.java:60) 实际上,与此模拟的交互为零。
江户川乱折腾
相关分类