Ray*_*ond 5 c# unit-testing console-application
我有一个控制台应用程序(稍后将作为 Windows 服务安装),它基本上运行一个无限循环,从队列中读取消息并对该消息执行某些操作。
我想创建一个自动化测试用例来启动测试端到端行为。我的问题是,在单元测试中启动应用程序的最佳方法是什么?我要使用 Process.Start 吗?或者我可以直接引用 Program.cs - static void main 并运行它吗?
想法?示例代码将不胜感激,谢谢!
[更新:是的,我知道这是一个集成测试。我已经更新了标题。我已经将我的逻辑与业务逻辑分开了。集成测试的价值实际上是以自动化的方式完成这一任务。它确保我的所有配置设置都是正确的,我的程序集版本问题没问题,我的日志记录是,数据库、队列和缓存访问都在运行,等等]
当我创建这种类型的设置时,我将所有工作放在一个单独的 DLL 中。Windows 服务/控制台应用程序位于一个小型项目中,它将大部分工作委托给 DLL。大多数功能测试都是针对该 DLL 进行的。
为了测试最终的可执行文件,我将启动一个进程(假设您的测试正在生成控制台以单元测试可以测量的方式添加处理的消息)。
确保您有适当的方法来终止控制台应用程序(例如发送“关闭”消息),并检查该进程是否在单元测试中实际退出。
如果您有多个单元测试都想要启动控制台应用程序,那么如果每个单独的测试都启动控制台应用程序,它们将无法并行运行测试。在这种情况下,让您的测试类负责开始和结束该过程,而不是每个单独的单元测试。
| 归档时间: |
|
| 查看次数: |
3628 次 |
| 最近记录: |