【发布时间】:2015-07-29 20:55:34
【问题描述】:
我需要测试一个类以确定在给定特定输入的情况下是否发生了相关操作。代码是这样的:
protected static void receiveInput() {
String command;
boolean b = true;
Scanner scanner = new Scanner(System.in);
while (b) {
command = scanner.next();
switch(command) {
case "first":
System.out.println("First!");
break;
case "second":
System.out.println("Second!");
break;
case "third":
System.out.println("Third!");
break;
default:
System.out.println("\n***** Invalid *****\n");
}
System.out.println("\n");
}
scanner.close();
}
如果我能以某种方式控制命令字符串并跟踪扫描仪对象,我可能会得到一个相当彻底的单元测试。出于某种原因,我实际上不允许将这两个对象作为此方法的参数注入。有哪些选择可以以不同的方式进行此测试?
【问题讨论】:
-
您不能将其设为
string类型的值返回函数,而只返回特定的大小写字符串以进行检查? -
您能否更改此方法以使其对单元测试更友好?
-
这不是一个对单元测试非常友好的方法。通常对我来说,当我对 void 方法进行单元测试时,这是因为它们会产生某种副作用或状态变化。然后我测试该副作用是否正确发生。不幸的是,在这种情况下,如果不更改方法就很难进行单元测试。
标签: java unit-testing junit switch-statement mockito