我想对读取电源信息的类进行单元测试。 我有一个私有的readonly变量,我从System.Windows.SystemInformation.PowerStatus分配一个值,我可以使用反射来改变这个没问题,但是......
System.Windows.PowerStatus没有公共构造函数,不会让我继承它来派生我可以用于测试的testPowerStatus类。
我希望能够覆盖BatteryLifePercent和BatteryLifeRemaining属性的getter,这样我就可以测试当这些是特定值时会发生正确的行为。
无论如何我能做到吗?或者这不可能吗?
答案 0 :(得分:2)
您实际上不需要测试将System.Windows.SystemInformation.PowerStatus中的值分配给私有变量的例程,尝试在单独的例程中提取您需要测试的逻辑,例如具有数字的方法作为模拟重要信息的参数。
看看PowerStatus公开的成员,他们都是int,float或enums尝试将这些作为参数提供给你的单位,然后更容易测试。
答案 1 :(得分:1)
“正确”的方法是创建一个抽象层。您应该创建一个IPowerInfoProvider接口,然后创建一个实现测试接口的存根,以及另一个提供真实电源信息的实现。
你的BL应该只知道IPowerInfoProvider接口。
答案 2 :(得分:1)
我宁愿创建一个接口IPowerStatus,它具有您需要的属性和方法。我会为System.Windows.PowerStatus
创建包装类,实现IPowerStatus并在keeped对象上重新调整方法和getter / setter。对于单元测试,您可以使用一些模拟实现您的IPowerStatus。