我正在尝试为我创建的游戏编写单元测试。 该游戏是一个tic tac toe实现,它与用户交互并从命令行获取输入。 我不知道如何编写测试来检查用户输入。 例如: 运行时:程序要求用户输入名称及其符号('x'或'0') 然后继续接受位置输入。
我是否创建了@Before方法并在此方法中编写输入语句?或者有更好的方法吗? 在我的@Before方法中编写所有内容会使它变得非常大。
有什么建议吗?请帮忙。
谢谢
答案 0 :(得分:1)
你说你想写
将采取并检查用户输入的测试
你不应该有一个同时兼顾用户输入的课程,这是不好的凝聚力。 相反,有两个类,一个Validator(或检查器或你想要调用它)和一个输入处理器,它接受用户输入并构建一个Validator理解的对象。
一旦你将问题分开,为你的Validator编写一个junit测试用例应该非常简单。至于用户输入类,请查看此问题about how to unit test console based app
答案 1 :(得分:1)
理想情况下,您将输入类拆分为接口和实现,然后创建MockInput用于测试目的。
interface IUserInput {
public String getUserName();
public XO_Enum getUserSymbol();
}
class MockUserInput implements IUserInput {
private XO_Enum xo;
private String name;
public MockUserInput(String name_, XO_Enum xo_) {
xo = xo_;
name = name_;
}
public String getUserName() { return name; }
public XO_Enum getUserSymbol() { return xo; }
}
当某些测试需要假的用户输入时,你只需要为这个场合添加一个模拟测试并继续进行。符号和名称可以是硬编码的,但这种方式可以为您提供一些灵活性。
鉴于哈菲兹的回答,我们其中一个人显然回答了错误的问题......我不太确定这是他。好吧,这对任何一种方式都有帮助。