我正在编写一些在org.eclipse.swt.printing.Printer
上打印的代码。所以第一步是看看我如何测试它,但似乎架构不允许我定义我自己的打印机,因为PrinterData
和Printer
都不是它们应该的接口,或者至少是一个抽象的类。
我可能只是模拟打印的GC
对象,但由于我使用第三方库来进行实际打印,因此这将非常困难。 (说实话,GC
对象不适合单元测试。)
或者我可以在模型打印之前对其进行测试,但测试中仍然缺少一大步。
有没有办法模拟Printer
所以我可以完全测试我的代码?
答案 0 :(得分:1)
我通常只会模仿我拥有的类型(Should you only mock types you own?)。
现在技术上几乎不可能模拟像Printer
这样的最终类型,我会写一个打印机抽象。此类仅显示应用程序实际依赖的打印机API。在内部,抽象可以使用Printer
的实例来委托。
这将为您提供一个可以安全模拟的类或接口,只有委托代码才会被测试。