我正在编写一个 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/