2016-09-21 2 views
0

Я нахожусь в процессе написания кода, который печатает на org.eclipse.swt.printing.Printer. Итак, первый шаг - посмотреть, как я могу проверить это, но, похоже, архитектура не позволяет мне определять мой собственный принтер, поскольку ни PrinterData, ни Printer не являются интерфейсами, как они должны, или, по крайней мере, абстрактным классом.Mock SWT Printer

Возможно, я мог бы просто высмеять объект GC, который будет напечатан, но это было бы очень сложно, поскольку я использую стороннюю библиотеку для фактической печати. (И, честно говоря, GC объекты не являются лучшими для модульных тестов.)

Или я мог бы просто протестировать модели до того, как они будут напечатаны, однако в тесте еще нет большого шага.

Есть ли способ высмеять Printer, чтобы я мог полностью проверить свой код?

ответ

1

Я обычно высмеиваю только те типы, которыми владею (Should you only mock types you own?).

Теперь, когда даже технически почти невозможно вымыть окончательные типы, такие как Printer, я бы написал абстракцию принтера. Этот класс будет только раскрывать API-интерфейс принтера, на который приложение действительно полагается. Внутренне абстракция может использовать экземпляр Printer для делегирования.

Это дает вам класс или интерфейс, безопасный для фальсификации, и только код делегирования будет непроверен.