相关疑难解决方法(0)

单元测试基于计时器的应用?

我目前正在C#中编写一个简单的,基于计时器的迷你应用程序,每隔k秒执行n次动作.
我正在尝试采用测试驱动的开发风格,因此我的目标是对应用程序的所有部分进行单元测试.

所以,我的问题是:有没有一种好的方法来对基于计时器的类进行单元测试?

正如我所看到的那样,问题在于,测试执行时需要花费很大的时间,因为他们必须等待这么长时间才能完成所需的操作.
特别是如果想要实际数据(秒),而不是使用框架允许的最小时间分辨率(1毫秒?).
我正在使用模拟对象来执行操作,以记录操作被调用的次数,以便操作几乎没有时间.

.net c# unit-testing timer

19
推荐指数
2
解决办法
6732
查看次数

单元测试系统.timers.timer

我一直在阅读有关定时器和线程的单元测试的问题.我找到了关于单元测试system.threading.timers的SO问题,但是我需要对system.timers.timer和一个包装类进行单元测试,这对于这个问题似乎并不顺利.

我只需要知道如何模拟计时器和/或系统时间,以便对它进行单元测试.我似乎无法在谷歌的任何地方找到这个.

编辑和更新:有意义的是,如果我通过如下包装来提取计时器,我可以生成一个计时器并使用模拟将其替换为不同的计时器.然后,相关部分将采用我在运行时注入的计时器(原始而不是模拟)并测试它的已用事件代码.

.net c# unit-testing

13
推荐指数
1
解决办法
6923
查看次数

如何对内部使用计时器的类进行单元测试?

无论喜欢与否,偶尔你必须为内部使用计时器的类编写测试.

比如说一个类,它接收系统可用性的报告,并在系统停机时间过长时引发事件

public class SystemAvailabilityMonitor {
    public event Action SystemBecameUnavailable = delegate { };
    public event Action SystemBecameAvailable = delegate { };
    public void SystemUnavailable() {
        //..
    }
    public void SystemAvailable() {
        //..
    }
    public SystemAvailabilityMonitor(TimeSpan bufferBeforeRaisingEvent) {
        //..
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用了一些技巧(将这些作为答案发布)但我不知道其他人做了什么,因为我对我的任何一种方法都不满意.

.net testing unit-testing timer

10
推荐指数
2
解决办法
4465
查看次数

标签 统计

.net ×3

unit-testing ×3

c# ×2

timer ×2

testing ×1