我们如何根据某事发生的日期对功能进行验收/集成测试?
为简单起见,让我们假设这个功能:我们监控一个文件夹,并将项目添加到与接收到的文件对应的 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/