我有一个小项目,通过符号,价格,时间等输入对交易进行一些统计计算,我使用的是Visual Studio单元测试工具,这足以防止我对类/函数进行正常测试这不会及时回到原点。
我有一些统计公式要计算,例如移动平均线。这可能必须基于“1分钟”时段计算5个间隔。所以我必须保持每分钟的最后一个值(我已经把它放在逻辑中)并在第5分钟内对最后一个值进行平均。
现在的问题是我运行一个测试会丢失5分钟(通过放置Thread.Sleep)。有没有一种有效的方法来测试这种基于时间的函数/算法?
答案 0 :(得分:0)
为什么不只是使用适当的时间戳值来模拟/创建测试数据,例如DateTime.Now.AddMinutes(1) 2 , 3 ,4...
...
或者您的业务逻辑是否真的必须等待一分钟才能进行每次“迭代”? 我的意思是,通常你只是将数据传递给你的计算方法,无论数据创建的时间是什么? 如果不是这种情况,可能会重构您的代码以使其更易于测试;)
答案 1 :(得分:0)
您应该使用填充程序指定要为时间戳值指定的值。由于您使用的是Visual Studio,请查看此链接以解释如何使用它们:http://msdn.microsoft.com/en-us/library/hh549175.aspx。像DateTime这样的对象可能很难模拟,因为DateTime是一个类而不是一个接口。垫片会将对象的调用重定向到对象,例如DateTime.Now到您编写的自定义函数。