在我的 C++ 代码库中,我有一个类
PassiveBuzzer
,它在软件中模拟通过 PWM 线路驱动的有源蜂鸣器的行为。它可以配置模式,如 PWM 线的周期和占空比。构造函数采用“打开”时发出蜂鸣声的频率。构造函数还采用 Linux::PWM::Line
类型的对象,该对象派生自接口 PWM::Line
。因此,我可以轻松地在单元测试中模拟该对象。
为了打开和关闭被动蜂鸣器,我目前主要使用timerfd(带有C++包装类)。 但是,这使我无法很好地测试类的行为,因为 Timer 是在
PassiveBuzzer
类内部构造的,而不是传递给它。
我希望能够测试
PassiveBuzzer
类并让结果具有确定性(独立于系统负载和其他因素)。
允许对依赖时间触发行为的类进行确定性测试的常见方法有哪些?我如何在课堂之外腾出时间?
正如 Eljay 和 Pepijn Kramer 正确提到的那样,我应该将 Timer 作为构造函数参数传递给
PassiveBuzzer
类。谢谢!