2016-09-21 32 views
0

我正在编写一些在org.eclipse.swt.printing.Printer上打印的代码。所以第一步是看我如何测试这个,但看起来架构不允许我定义我自己的打印机,因为PrinterDataPrinter都不是它们应该的接口,或者至少是一个抽象类。模拟SWT打印机

我可能只是嘲笑GC被打印的对象,但这会很难,因为我使用第三方库来进行实际的打印。 (说实话,GC对象不是最好的单元测试。)

或者我可以在打印之前测试模型,但是在测试中仍然缺少一大步。

有没有办法模拟Printer所以我可以完全测试我的代码?

回答

1

我通常只模拟自己的类型(Should you only mock types you own?)。

既然在技术上几乎不可能嘲笑像Printer这样的最终类型,我会写一个打印机抽象。该类只会公开应用程序实际依赖的打印机API。抽象内部可以使用Printer的实例委托给。

这会给您留下一个安全的模拟类别或接口,并且只有授权代码才会被测试。