JUnit测试扫描程序错误:NoSuchElementException

时间:2014-04-30 09:43:26

标签: java exception junit java.util.scanner

目前正在运行JUnit测试,我不断收到上述错误。我在我的班级中声明了一个公共的静态扫描程序,然后从包含测试类的不同包中访问它:

以下代码(在ClassA中)将继续循环,直到用户输入正确的输入。

public static Scanner sc;

public boolean methodInClass() {
    sc = new Scanner(System.in);
    for (; ; ) {
        for (int i = 0; i < 10; i++) {

            System.out.println("Please enter character. Enter A/B/C/D");
            char guess = sc.next().charAt(0);

            if (!correct) {
                System.out.println("Please enter a new guess");

                guess = sc.next().charAt(0);

            } 

///rest of code

在测试课程中:

这是@Test方法,并使用以下行来模拟扫描程序:

String input = "L\nL\nD\nU\nA\n";
System.setIn(new java.io.ByteArrayInputStream(input.getBytes()));
ClassA.sc = new Scanner(System.in); //should stop at A which is correct input

1 个答案:

答案 0 :(得分:0)

你永远不会将正确的值更改为TRUE,因此它会检查所有5个leters,trys取6,然后崩溃。 之后

char guess = sc.next().charAt(0);

添加

correct = guess=='A';

另外,你的自行车顶部永远不会结束。所以你可能想在某处添加休息。

编辑:当正确== false时,您正在阅读第1个,第3个,第5个符号。可能你并不打算这样做。