如果我有一个测试对象使用定时器来定时执行一些操作,那么测试它的好方法是什么?是否使用Thread.Sleep测试了定时间隔的操作?
一个method是将定时器包装在一个接口中,并将其作为依赖注入。
但是,我想避免创建另一个抽象。看来我可以通过注入更新间隔而不是定时器来避免这种情况。然后在我的测试中(假设采用AAA风格的测试),我在Act之后和认定之后放了一个Thread.Sleep
,使用非常小的时间值,因此测试不需要很长时间就可以运行。
这是一个坏主意吗?我知道它可能并不完全遵循TDD的原则,但是似乎必须有一条线路,让您停止在合同中注入任何东西并注入它。
”必须有一条线,在那里你停止用合同注入所有东西并注入它“ - 异端,我说;) – 2012-02-02 22:53:27
Windows中线程的调度不是确定性的,所以做这样的事情可能会使你的测试失败随机。 – svick 2012-02-03 01:53:10
@svick我没有真的想检查任何有关线程调度。只要我的计时器成功,就会在预期的时间内+一段宽限期内发生函数调用。像这样的情况会不会受到这些问题的影响? – 2012-02-03 14:54:47