gpt4 book ai didi

对带有输入的方法进行 Java 单元测试

转载 作者:行者123 更新时间:2023-12-02 01:52:46 25 4
gpt4 key购买 nike

当我使用“execute(p)”方法时,会出现一个列表,我必须选择一个项目:

@Override
public void execute(Player p) {
// listchoser with items available
ListChoser lc = new ListChoser();
Object itemChosen;
itemChosen = lc.chose("Which item?", p.getCurrentRoom().getItems());
System.out.println("You chose " + itemChosen.toString());
// put item effect on player
((Item) itemChosen).effect(p);
// remove item from current room
p.getCurrentRoom().removeItem(itemChosen);
}

我必须对其进行一些单元测试,因此我将如何进行:

Player c;
Action useAction;

@Before
public void initiliaze() {
c = new Player("Test", 100, 100,100);
c.setCurrentRoom(new Room("Debug Room", false));
useAction = new UseAction();
}

@Test
public void testUseAction(){
List<? super Item> l = c.getCurrentRoom().getItems();
int nbItems = l.size();
useAction.execute(c);
assertEquals(nbItems-1, c.getCurrentRoom().getItems().size());
}

当我启动此类测试时,我在处理此类测试时遇到了一些麻烦:当我应该只使用默认测试(例如 0 测试)时,系统会要求我输入输入

最佳答案

我建议将您的execute()方法分成两个单独的方法,这样第一个方法只接受输入,处理它并将操作结果传递给包含所有其余逻辑的第二个方法。

这使您的代码与 SOLID 一致的单一职责原则,还可以测试负责逻辑的代码部分,而不需要用户的任何输入(您可以只传递一些准备好的对象)

关于对带有输入的方法进行 Java 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52722745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com