2016-09-21 10 views
0

私はorg.eclipse.swt.printing.Printerに印刷するコードを書いています。だから最初のステップは、私はこれをテストすることができますが、それはPrinterDataPrinterのどちらもインタフェースであるか、少なくとも抽象クラスではないので、自分のプリンタを定義することはできません。模擬SWTプリンタ

GCオブジェクトを実際に偽装することができますが、実際に印刷するためにサードパーティのライブラリを使用するため、これは本当に難しいでしょう。 (正直言って、GCのオブジェクトは単体テストには最適ではありません)

または、モデルが印刷される前にテストすることはできますが、テストではまだ大きなステップがありません。

Printerを模擬する方法はありますか?私は自分のコードを完全にテストできますか?

答えて

1

私は通常自分が所有するタイプのみを模擬します(Should you only mock types you own?)。

Printerのような最終的なタイプをモックするのは技術的にはほとんど不可能なので、私はプリンタの抽象化を書いています。このクラスは、アプリケーションが実際に依存しているプリンタAPIのみを公開します。内部的には、抽象化にPrinterのインスタンスを使用して委譲することができます。

これは、偽装するのが安全で、委任コードだけがテストされないクラスまたはインターフェイスを残します。