【发布时间】:2017-10-17 05:47:19
【问题描述】:
我正在尝试测试一个在每一步后等待用户输入的命令行应用程序。我可以使用 Stefan Birkner 提供的 System Rules 测试应用程序。目前,我提供从头到尾的输入,这就像一个魅力,我可以断言来自系统日志的最终输出。
但是,我想在应用程序结束之前测试否定情况,我在开始时提供无效输入以评估错误消息。当给出无效输入时,控制台会打印一条错误消息并一直等待用户提供有效输入。如何发送 Ctrl+C 使用如下所示:
systemInMock.provideLines(Ctrl+C);
systemInMock.provideLines 只接受字符串。有没有办法发送 Ctrl+C 信号?
我的 junit 测试示例如下所示:
@Test
public void testInValidMarker() throws Exception{
systemInMock.provideLines("abc","def","1");
Main.main(new String[]{});
assertTrue(systemOutRule.getLog().contains("Invalid marker, try again"));
}
感谢您的帮助!
【问题讨论】:
-
当您使用 CTRL-C 时操作系统会做什么取决于主机环境。您能告诉我们您使用的是什么操作系统吗?
标签: java