1

電力情報を読み取るクラスの単体テストを行いたいです。System.Windows.SystemInformation.PowerStatus から値を割り当てるプライベート読み取り専用変数があり、リフレクションを使用してこれを問題なく変更できますが...

System.Windows.PowerStatus にはパブリック コンストラクターがなく、それを継承して、テストで使用できる testPowerStatus クラスを派生させることはできません。

BatteryLifePercent および BatteryLifeRemaining プロパティのゲッターをオーバーライドできるようにして、これらが特定の値の場合に正しい動作が発生することをテストできるようにしたいと考えています。

とにかく私はこれを行うことができますか?それともこれは不可能ですか?

4

3 に答える 3

2

System.Windows.SystemInformation.PowerStatus の値をプライベート変数に割り当てるルーチンを実際にテストする必要はありません。別のルーチンでテストする必要があるロジックを抽出してみてください。たとえば、パラメーターとして数値を持つメソッドなどです。関連情報をシミュレートします。

PowerStatusが公開するメンバーを見てください。それらはすべて int、float、または enum のいずれかであり、これらをパラメーターとしてユニットに提供しようとします。これにより、テストが容易になります。

于 2012-11-13T11:28:46.617 に答える
1

これを行う「正しい」方法は、抽象化レイヤーを作成することです。IPowerInfoProvider インターフェイスを作成してから、テスト用のインターフェイスを実装するスタブと、実際の電力情報を提供する別の実装を作成する必要があります。

BL は、IPowerInfoProvider インターフェイスについてのみ知っている必要があります。

于 2012-11-13T11:27:11.733 に答える
1

むしろ、必要なプロパティとメソッドを持つインターフェイス IPowerStatus を作成したいと思います。System.Windows.PowerStatusIPowerStatus を実装し、保持されたオブジェクトのメソッドとゲッター/セッターを再スケーリングするためのラッパー クラスを作成するよりも。単体テストでは、IPowerStatus を実装するモックを使用できます。

于 2012-11-13T11:28:29.770 に答える