包含Scanner(TestNG)的测试方法

时间:2017-07-06 18:57:05

标签: java testng

我坚持使用需要用户输入的测试方法。以下是我在IOHandler类中的方法:

Callable<Integer> getNumber = new Callable<Integer>() {
    @Override
    public Integer call() throws Exception {
        try {
            return scanner.nextInt();
        } catch (InputMismatchException e) {
            writeOut("Bad params !\n");
            scanner.nextLine();
        }
        return call();
    }
};

 Optional<Object> handleIOAndGetInput(Callable function) {
    try {
        return Optional.ofNullable(function.call());
    } catch (IOException e) {
        System.err.println("Stream doesn't work");
        e.printStackTrace();
        System.exit(1);
    } catch (Exception e) {
        System.err.println("Something went wrong");
        e.printStackTrace();
        System.exit(1);
    }
    return Optional.empty();
}

这是我的Test类中的方法:

@Test
public void shouldTakeUserInput() {
    IOHandler ioHandler=new IOHandler();
    Assert.assertEquals((ioHandler.handleIOAndGetInput(ioHandler.getNumber)).orElse(null), 5);
}

所以我发了一些类似的帖子,但我找不到问题的答案。我所做的一切都是关于将输入伪装成断言,但在我的情况下,我必须在Callable getNumber中输入这个扫描仪。期待有关它的任何提示。提前致谢!

1 个答案:

答案 0 :(得分:0)

不幸的是,这是一个需要存储信息或使用将为其存根的框架的实例

尝试Mockito

这是java dev的正常问题。