c# – 模拟计算机系统日期时间

c# – 模拟计算机系统日期时间,第1张

概述我在C#中构建了一个 Windows服务,它根据当前的日期和时间从数据库中调用实时时间序列数据. 我在测试数据库中有测试数据,我想用它来计算数据是否以正确的方式使用. 我想知道是否有人使用过应用程序或有任何其他方法在本地计算机上“模拟”系统日期.例如,我可以运行此应用程序并将其设置为将系统日期设置为指定日期. 任何建议都会很棒. 只需封装您对接口后面的DateTime.Now属性的访问权限. pu 我在C#中构建了一个 Windows服务,它根据当前的日期和时间从数据库中调用实时时间序列数据.
我在测试数据库中有测试数据,我想用它来计算数据是否以正确的方式使用.
我想知道是否有人使用过应用程序或有任何其他方法在本地计算机上“模拟”系统日期.例如,我可以运行此应用程序并将其设置为将系统日期设置为指定日期.

任何建议都会很棒.

解决方法 只需封装您对接口后面的DateTime.Now属性的访问权限.

public interface IDateTimeProvIDer{    DateTime Now { get; }}

在您的代码中,使用如下实现:

public class DateTimeProvIDer : IDateTimeProvIDer{    public DateTime Now { get { return DateTime.Now; } }}

对于测试,您可以通过创建测试类或使用模拟框架来模拟IDateTimeProvIDer.

如果将此接口与依赖注入等技术一起使用,即使在运行时也很容易改变服务的行为.

你可以,例如创建一个总是休息一小时的IDateTimeProvIDer:

public class AlwaysTolateDateTimeProvIDer : IDateTimeProvIDer{    public DateTime Now { get { return DateTime.Now.AddHours(-2); } }}

或创建一个从文件,数据库,管道等读取“模拟”日期时间的实现.

在测试时,您将配置您的服务以使用其中一个实现,并且在实时模式下运行时,只需配置您的依赖注入以使用返回“正确”日期时间的普通实现.

当然有TypeMock Isolator ……

Isolate.WhenCalled(() => DateTime.Now).WillReturn(new DateTime(2008,1,1));
总结

以上是内存溢出为你收集整理的c# – 模拟计算机系统日期时间全部内容,希望文章能够帮你解决c# – 模拟计算机系统日期时间所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1223516.html

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

发表评论

登录后才能评论

评论列表(0条)

保存