使用SpecFlow测试控制台应用程序

时间:2012-12-02 10:37:44

标签: bdd specflow

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

这可能吗?

1 个答案:

答案 0 :(得分:3)

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

我打开解决方案并且nCrunch(这只是一个超高效的测试运行器)启动了一些测试,我们用它来协调多个服务器。其中一些测试检查时间尺度并确保进程按预期开始和停止。你可以这么说,因为每当我尝试键入一些内容时,会弹出一个calc.exe窗口来窃取我的焦点,它确实会妨碍你。那是你真正想做的吗?

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

我建议你再考虑一下你的要求。如果您想要启动流程并检查它是否与您进行交互,那么只需测试其参数和结果。如果你需要隔离它的功能,就像使用mock一样(就像我在编写测试时没有做的那样)。尝试尽可能简化测试。

这样想。 - 你真的需要测试Process.Start打开一个窗口吗? MS当然可以吗? :-) - 你真的需要测试Console.ReadLine获取一个字符串吗? - 如果你用模拟分裂它们分别测试MyArgumentParser和MyBusinessLogic,你的测试会不会更简单?