我们如何对依赖日期发生的功能进行验收/集成测试?
为简单起见,我们假设这个功能:我们监视一个文件夹,并将项添加到与接收文件对应的ListView中。 listview项目的颜色取决于收到的日期。比方说,如果星期天收到它,颜色是红色,星期一,它是蓝色等。
如何在不需要一周运行的情况下为此功能制作测试代码?测试代码是否应该修改系统日期(但我担心这会导致测试框架和报告中的怪异)?有关信息,应用程序是.net,开发人员使用DateTime.Now来获取接收时间。
注意这不是单元测试,这是一种模仿用户交互的验收测试。
答案 0 :(得分:2)
但是,这不会测试完整,真实的实现,而是更多的单元测试。如果您确实在谈论端到端集成测试,那么是的,您将需要修改系统时间。
答案 1 :(得分:0)
将您的时间改为活动前。
答案 2 :(得分:0)
你需要的是“模拟”DateTime接口的一些方法 - 也就是说,使DateTime返回预定值而不是当前时间。 “注入”模拟类以替换现有类的过程称为“依赖注入”(DI),并且在下面讨论了许多用于执行DI的框架:
Which .NET Dependency Injection frameworks are worth looking into?
答案 3 :(得分:0)
如果是需要用户互动的验收测试,那么最好的办法就是更改系统时间。
如果是单元测试,则需要将依赖项(DateTime)传递给要测试的方法。