Unit testing 如何对写入打印机的对象进行单元测试?

Unit testing 如何对写入打印机的对象进行单元测试?,unit-testing,testing,printing,Unit Testing,Testing,Printing,我刚刚开始单元测试,我正在测试的组件有许多方法可以打印到指定的打印机,例如: 配置LOTANDPRINTSTRING printerID、字符串批次、整数数量; 配置logo和PrintString printerID、图像徽标; 我遇到了一个明显的问题,实际上我并不想打印,但我需要为方法指定一个有效的Windows打印机名称来测试它们的功能。我不能重构我的对象来获取一个我可以模拟的打印机对象,即使我可以,我仍然需要在某个时候对打印机对象进行单元测试,我也会遇到同样的问题 我唯一能想到的就是安装

我刚刚开始单元测试,我正在测试的组件有许多方法可以打印到指定的打印机,例如:

配置LOTANDPRINTSTRING printerID、字符串批次、整数数量; 配置logo和PrintString printerID、图像徽标; 我遇到了一个明显的问题,实际上我并不想打印,但我需要为方法指定一个有效的Windows打印机名称来测试它们的功能。我不能重构我的对象来获取一个我可以模拟的打印机对象,即使我可以,我仍然需要在某个时候对打印机对象进行单元测试,我也会遇到同样的问题

我唯一能想到的就是安装一台虚拟打印机,它实际上什么都不会做。那里的各种PDF打印机都会弹出窗口并要求输入文件名,所以这不起作用。我需要的是一个黑洞,我可以将打印作业发送给它。谷歌搜索没有发现任何有前途的东西,所以我想我应该在这里问一下,看看测试人群建议我做什么


有人这样做了,或者有人知道你将如何处理这种情况吗?

1。为什么你不能重构你的代码?2.一旦您这样做了,您可能需要通过集成或手动测试来测试/actual/printer代码,但至少大部分逻辑将被单元测试覆盖。顺序是:缺乏时间1人开发团队,缺乏经验,打印位于第三方组件的黑盒中,需要打印机名称来设置页面默认值,这是测试组件其他功能所必需的。对我来说,单元测试这些东西最直接的途径是我可以使用的黑洞打印机,一个有效的模拟打印机。我的许多AND打印方法可能是重构的很好的候选者。。。它们是方便的方法,旨在避免用户调用SetSerialNumber、SetLogologo、SetQuantityqty和PrinterID。相反,我配置了LabelandPrintSN、徽标、数量和printerID。我可以将配置位重构为私有方法,我希望尽可能减少接口,然后使用访问器对其进行单元测试,甚至不用担心测试ConfigureLabelAndPrint方法。代码覆盖率分析工具会正确地报告这样的方案吗?