.net - 如何测试依赖于事件发生日期的功能?

标签 .net testing datetime acceptance-testing

我们如何根据某事发生的日期对功能进行验收/集成测试?

为简单起见,让我们假设这个功能:我们监控一个文件夹,并将项目添加到与接收到的文件对应的 ListView 中。 ListView 项目的颜色将取决于收到它的日期。比如说,如果星期天收到,颜色是红色,星期一,颜色是蓝色,等等。

我们如何才能在不需要运行一周的情况下针对此功能编写测试代码?测试代码是否应该修改系统日期(但恐怕这会导致测试框架和报告出现异常)?有关信息,应用程序是 .net,开发人员使用 DateTime.Now 获取接收时间。

请注意这不是单元测试,而是模拟用户交互的验收测试。

最佳答案

  • 您将不得不使用一个假框架,它可以在不需要接口(interface)的情况下对 DateTime.Now 返回的内容进行 stub 。喜欢TypeMock
  • 否则,您可以创建自己的 Date 对象,您可以更好地控制伪造(在这种情况下不太可取,因为这样做只是为了测试您的代码)
  • 否则,您可以创建一个具有 GetCurrentDate 方法的类,您可以 stub 。在您的产品实现中,您可以使用 DateTime.Now,但在您的测试中,您可以将其 stub ,以便它返回您想要的任何日期。 这可能是 IMO 的最佳解决方案

但是,这不会测试完整、真实的实现,而更像是一个单元测试。如果您确实在谈论端到端集成测试,那么是的,您将需要修改系统时间。

关于.net - 如何测试依赖于事件发生日期的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731526/

相关文章:

c# - WWSAPI 等效于 App.config 中的 C#/.net <serviceCertificate>

c# - 当 mp3 列出艺术家时,TagLib Sharp 返回空白艺术家

c# - Memorystream.Read() 总是返回 0 bytesRead 和空 byte[]

Javascript Date、setFullYear 更改时区

ruby-on-rails - 查询 postgresql View 时 Active Record 转换日期不一致

c# - xaml 中使用的通用类型的 TypeConverter

android - 在 Eclipse 中使用 Robolectric 进行测试

javascript - Testcafe - 页面对象结构和默认类

MYSQL DateTime Now()+5 天/小时/分钟/秒?

image - 无法列出 Selenium 中缺少标题属性的图像