我有以下代码要测试:
public IGrid createIGrid() {
while(size < 0){
userInput();
}
GridArray gamefield= new GridArray(size);
return gamefield;
}
public void userInput(){
System.out.println("Bitte geben Sie die größe des Grid an. Der Wert muss größer als 0 sein.");
int size = scanner.nextInt();
if (size < 1) {
throw new ImpossibleValueForArrayException();
}
}
现在我想测试一下。我该怎么办?
答案 0 :(得分:0)
你可以模拟一个函数的调用。
public class Core {
private static HandleInput handleInput = new HandleInput();
public static void main(String[] args) {
handleInput.getConsoleInt();
}
@Test
public void test() {
handleInput.handleInput(74); // your testing number
}
}
对于输入处理程序:
class HandleInput {
Scanner scanner = new Scanner(System.in);
public int getConsoleInt() {
return scanner.nextInt();
}
public void handleInput(int input) {
if (input < 1) {
throw new ImpossibleValueForArrayException();
}
}
}
但你可以用Robot.class
来做...但那非常昂贵......
答案 1 :(得分:0)
将Mockito框架与JUnit结合使用,因此您可以模拟scanner.nextInt()
并定义要返回的预期值。
如果您不熟悉Mockito,我建议您阅读这篇文章http://www.vogella.com/tutorials/Mockito/article.html