在JUnit测试中捕获键盘输入

时间:2012-05-10 09:47:26

标签: java junit console

我正在编写一个JUnit测试,必须在运行之前等待用户的输入;场景类似于:

  • 开始运行测试
  • 等待一些无法自动/模拟完成的外部操作;用户必须执行一些手动活动,然后通知测试继续
  • 继续投放

我尝试使用

System.out.println( "Press enter to continue" );
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
reader.readLine();
System.out.println( "Resuming..." );

但它不起作用,因为System.in似乎不接受测试中键盘的输入。

我知道这不是典型/正统的单元测试,但我想将其编码为一个,因为使用Maven测试各种情况很方便。

我可以这样做,还是应该将我的测试转移到正常(即非Junit)程序?

由于

1 个答案:

答案 0 :(得分:1)

如果它需要用户输入,那么它实际上不是单元测试 - 不要将其视为单独测试。

只需将其设为一个易于运行的简单程序,然后在需要时进行测试。将它包含在您的构建中是没有意义的,因此它应该按照不同的计划运行 - 不是每个构建,而是更符合您的开发过程 - 每天,每个新功能等。