首页 / 知识
关于c#:如何对Windows服务进行单元测试?
2023-04-14 02:35:00

How can I unit test a Windows Service?
.NET Framework:2.0 我是TDD(测试驱动开发)的新手。 首先,甚至可以对Windows Service进行单元测试吗? Windows服务类是从ServiceBase派生的,ServiceBase具有可重写的方法, 我如何触发这些方法被调用,就好像单元测试是按正确顺序调用这些方法的实际服务一样? 此时,我是否还在进行单元测试? 或集成测试? 我已经看过WCF服务问题,但是对我来说这没有任何意义,因为我从未处理过WCF服务。 我可能会建议设计您的应用程序,以便Windows Service中的" OnStart"和" OnStop"替代仅调用类库程序集上的方法。这样,您可以针对类库方法自动执行单元测试,并且设计还从Windows Service的实现中抽象出您的业务逻辑。 在这种情况下,在Windows Service上下文中测试" OnStart"和" OnStop"方法本身将是一个集成测试,而不是自动化的测试。 我通过不直接测试服务,而是测试服务的功能来对Windows服务进行单元测试。 通常,我为该服务创建一个程序集,并为该服务创建另一个程序集。然后,我针对第二个程序集编写单元测试。 这种方法的好处是您的服务非常薄。基本上,它所做的只是调用方法在正确的时间进行正确的工作。您的另一个程序集包含您的服务打算完成的所有工作。这使得测试非常容易,并且可以根据需要轻松重用或修改。 我将从这里开始。它显示了如何在C#中启动和停止服务 一个示例开始是
我还主要通过控制台应用程序测试了服务,以模拟服务将执行的操作。这样,我的单元测试就完全自动化了。 我会使用Windows服务类(在启动/停止服务时运行的服务类),就像真实系统的代理一样。我看不出您的服务背后的代码与任何其他编程应该有什么不同。 onStart和onStop方法只是触发事件,例如按GUI上的按钮。 因此,您的Windows服务类是非常薄的类,可与Windows窗体相比。它调用您的业务逻辑/域逻辑,然后执行应做的事情。您所要做的就是确保您在onStart和onStop中调用的方法按预期工作。至少那是我会做的;-)
设计测试是一个不错的策略,因为许多答案都建议通过委托域对象使
但是,如果由于某些原因测试确实需要执行服务方法,则可以使用如下代码从测试方法中调用它们(在此示例中调用
自动关闭,关闭条件下的测试窗口服务 盖伊可能是最好的答案。 无论如何,如果确实需要,您可以按照MSDN文档中的说明在单元测试中调用这两种方法,但是由于它们是受保护的,因此需要使用Reflection。 |
最新内容
相关内容
服务器重启命令linux?
服务器重启命令linux?,工作,标准,设备,服务,系统,名称,命令,百度,网络,密码,怎么使用linux命令重启服务器1、shutdown。poweroff。init。reboolinux服务端常用命令?
linux服务端常用命令?,工作,地址,系统,网络,基础,命令,标准,工具,信息,管理,linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目linux禁用服务命令行?
linux禁用服务命令行?,服务,系统,软件,管理,工具,信息,状态,平台,连续,技术,linux系统ssh服务关闭命令1、exit就可以呀 输入exit并回车就可以linux停服务常用命令?
linux停服务常用命令?,地址,工作,系统,命令,服务,信息,标准,管理,代码,进程,linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目linux服务器删除命令?
linux服务器删除命令?,系统,服务,管理,情况,命令,工作,互动,地址,软件,较大,linux系统里怎么删除已经安装的dns服务器如果是清除NSCD上的Cachelinux开启服务命令?
linux开启服务命令?,服务,标准,设备,工作,网络,系统,密码,命令,服务器,终端,怎么使用linux命令重启服务器1、shutdown。poweroff。init。reboolinux编写c语言命令?
linux编写c语言命令?,系统,基础,环境,代码,盘面,保险,百度,情况,数据,工具,在Linux系统中,如何运行一个C语言程序?编译。由.c文件生成.o文件,写linux服务器负荷命令?
linux服务器负荷命令?,信息,电脑,中科,环境,工具,系统,平均,检测,情况,状态,linux服务器监控的几个方法和命令uptime 该命令直观的显示了服务linux常见服务器命令?
linux常见服务器命令?,信息,工作,标准,地址,设备,系统,情况,时间,状态,命令,一个弱弱的LINUX系统问题:LINUX命令行下如何查看服务器配置啊~!?linux服务器基础命令?
linux服务器基础命令?,设备,标准,工作,地址,服务,系统,信息,情况,图片,基础,怎么使用linux命令重启服务器1、shutdown。poweroff。init。reboo服务器linux命令大全?
服务器linux命令大全?,标准,工作,设备,系统,服务,信息,时间,命令,服务器,级别,linux重启命令为关机、init 1为重启,其它运行级别这里不做过多介重启linux服务器命令?
重启linux服务器命令?,标准,设备,工作,命令,网络,系统,提示,主机,服务器,接点,linux重启服务器命令是什么1、怎么使用linux命令重启服务器shut