3

我想使用 SpecFlow 来测试控制台应用程序。我希望 SpecFlow 启动控制台应用程序并以与用户通过标准输入/输出完全相同的方式与之交互。

这可能吗?

4

1 回答 1

3

是的,事实上我现在在我的机器上打开了一个这样的解决方案。我的建议是“不要这样做!”。

我打开解决方案,nCrunch(它只是一个超高效的测试运行程序)为我们用来协调多个服务器的调度系统启动了一些测试。其中一些测试检查时间表并确保流程按预期启动和停止。你可以这样说,因为每次我尝试输入一些东西时,都会弹出一个 calc.exe 窗口来窃取我的注意力,而且它确实妨碍了我。那是你真正想做的吗?

不要忘记 SpecFlow 确实是一个业务需求自动化系统,这是“一件好事”。但到目前为止,您只关注这里的技术问题。

我建议你再考虑一下你的要求。你想在哪里开始一个进程并检查它与你的交互,然后简单地测试它的参数和结果。如果您需要隔离它的功能(就像我在编写测试时没有做的那样,哎呀),请使用模拟。尝试使您的测试尽可能简单。

这样想吧。- 你真的需要测试 Process.Start 打开一个窗口吗?MS肯定是对的吗?:-) - 你真的需要测试 Console.ReadLine 得到一个字符串吗?- 如果您分别测试 MyArgumentParser 和 MyBusinessLogic 并使用模拟拆分它们,您的测试会不会更简单?

于 2012-12-03T13:40:37.993 回答