c# – 如何对心跳模式进行单元测试?
发布时间:2020-12-16 01:41:35 所属栏目:百科 来源:网络整理
导读:我正在编写一个客户端,每秒向服务器发送一个“心跳信号”.客户端在后台线程中调用WCF服务以报告其活动. 如何对此进行单元测试?我是否需要等待几秒钟并检查是否多次调用了适当的方法? 它应该是某种情景测试吗?也许我不应该担心在整个客户的整个生命周期中
我正在编写一个客户端,每秒向服务器发送一个“心跳信号”.客户端在后台线程中调用WCF服务以报告其活动.
如何对此进行单元测试?我是否需要等待几秒钟并检查是否多次调用了适当的方法? 它应该是某种情景测试吗?也许我不应该担心在整个客户的整个生命周期中不断调用服务? 我可以测试对WCF服务的单个调用,但它不测试“心跳模式”. 我正在使用TDD方法. (C#,NUnit,Moq) 有什么建议或例子吗? 编辑: 我认为还不够清楚. 这是我所拥有的更简单的版本: public class FeedService { private Timer t; public FeedService() { t.Interval = 1000; t.Elapsed += TimerElapsed; t.Start(); } private void TimerElapsed(object sender,ElapsedEventArgs e) { t.Stop(); SendHeartbeat(); t.Start(); } } ……这是我的考验: [Test] public void Heartbeat_called_twice_after_2_seconds() { var mockFeedService = new Mock<FeedService>(); Thread.Sleep(2000); mockFeedService.Verify(x => x.SendHeartBeat(),Times.AtLeast(2)); } 我有两个问题: 解决方法
必须首先隔离要测试的功能.例如,在这种情况下,可以测试两个方面.一个是listenbeat组件实际上在指定的时间表上发送心跳消息.另一个是服务接收消息.如果您抽象服务,那么您可以独立于服务实现测试听力组件.这可以在单元测试中通过启动听力组件然后休眠,然后验证存根或模拟服务实现接收到预期数量的消息来完成.确保服务正在接收消息的测试是
integration test,因此不是“纯”单元测试.但是,由于必须进行测试,因此您也可以使用测试用例.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |