c# – 如何对心跳模式进行单元测试?

c# – 如何对心跳模式进行单元测试?,第1张

概述我正在编写一个客户端,每秒向服务器发送一个“心跳信号”.客户端在后台线程中调用WCF服务以报告其活动. 如何对此进行单元测试?我是否需要等待几秒钟并检查是否多次调用了适当的方法? 它应该是某种情景测试吗?也许我不应该担心在整个客户的整个生命周期中不断调用服务? 我可以测试对WCF服务的单个调用,但它不测试“心跳模式”. 我正在使用TDD方法. (C#,NUnit,Moq) 有什么建议或例子吗? 编 我正在编写一个客户端,每秒向服务器发送一个“心跳信号”.客户端在后台线程中调用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));}

我有两个问题:
1)为什么我的测试总是失败?我做错了什么?
2)我应该测试一下吗?

解决方法 必须首先隔离要测试的功能.例如,在这种情况下,可以测试两个方面.一个是Listenbeat组件实际上在指定的时间表上发送心跳消息.另一个是服务接收消息.如果您抽象服务,那么您可以独立于服务实现测试听力组件.这可以在单元测试中通过启动听力组件然后休眠,然后验证存根或模拟服务实现接收到预期数量的消息来完成.确保服务正在接收消息的测试是 integration test,因此不是“纯”单元测试.但是,由于必须进行测试,因此您也可以使用测试用例. 总结

以上是内存溢出为你收集整理的c# – 如何对心跳模式进行单元测试?全部内容,希望文章能够帮你解决c# – 如何对心跳模式进行单元测试?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1216599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存