【发布时间】:2015-09-25 20:12:29
【问题描述】:
我有一个控制台应用程序(稍后将作为 Windows 服务安装),它基本上运行一个无限循环,从队列中读取消息并对该消息执行某些操作。
我想创建一个自动化测试用例来启动测试端到端行为。我的问题是,在单元测试中启动应用程序的最佳方式是什么? 我使用 Process.Start 吗? 或者我可以直接引用 Program.cs - static void main 并运行它吗?
想法?示例代码将不胜感激,谢谢!
[更新:是的,我知道这是一个集成测试。我已经更新了标题。我已经为业务逻辑分离了我的逻辑。集成测试的价值在于以一种自动化的方式真正做到这一点。它确保我所有的配置设置都是正确的,我的程序集版本问题没问题,我的日志记录是,数据库和队列和缓存访问都在运行,等等]
【问题讨论】:
-
理想情况下,您的 Program.cs 中有一个类可以为您完成工作。所以你是 Program.cs 只会构造和调用该类上的任何方法。这样,如果您的控制台应用程序中有依赖项(例如数据),那么您可以将它们注入到您的单元测试中。
-
如果您说的是单元测试...那么您的应用程序中每个类(严格来说)的测试呢?您不应该一起测试应用程序,而是测试它的组件。同样在极端情况下,您的应用程序(作为黑匣子)可能不会/不应该得到。对于集成测试,然后使用 Process.Start() 运行您的应用程序,直接调用其类会破坏测试,因为您的测试台将/可能会过多地影响其环境。
标签: c# unit-testing console-application