java - 在 JUnit 测试中捕获键盘输入

标签 java junit console

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

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

我尝试使用

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)程序中?

谢谢

最佳答案

如果它需要用户输入,那么它并不是真正的单元测试 - 不要将其视为单元测试。

把它做成一个简单的程序,很容易运行,然后在需要的时候进行测试。将其包含在您的构建中是没有意义的,因此它应该按不同的时间表运行 - 不是每个构建,而是更符合您的开发流程的东西 - 每天,每个新功能等。

关于java - 在 JUnit 测试中捕获键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10531465/

相关文章:

使用 Csrf 的 Spring Security 单元测试导致找不到 HttpServletResponse

java - 创建一个 "Command"控制台

java - ProcessBuilder和Process.waitFor(),它等了多久?

c# - 从控制台 C# 上的位置读取

java - 服务和 Activity 通信...从服务接收到数据时更新 UI

java - @Before 和@BeforeClass 有什么意义?

java - Eclipse JFace 的向导

java - SessionNotCreatedException - selenium webdriver

java - XML 解析错误 javascript servlet

c# - 如何在 Java 中创建日期属性?