如何在.NET中打印到空打印机?
我需要为打印文档的方法编写一个单元测试。有没有一种简单的方法可以将输出发送到与/dev/null等效的Windows?我猜让我们的构建服务器在每次签入时打印一份文档会很快变得昂贵。;) 理想情况下,这将在我们的构建服务器(没有默认打印机)和开发机器(有默认打印机)上工作,因此我不希望更改默认打印机如何在.NET中打印到空打印机?,.net,printing,.net,Printing,我需要为打印文档的方法编写一个单元测试。有没有一种简单的方法可以将输出发送到与/dev/null等效的Windows?我猜让我们的构建服务器在每次签入时打印一份文档会很快变得昂贵。;) 理想情况下,这将在我们的构建服务器(没有默认打印机)和开发机器(有默认打印机)上工作,因此我不希望更改默认打印机 感谢所有这些精彩的答案,这些答案无疑将伴随着这个迷人的问题。您应该使用模拟框架来模拟print方法,这样它就永远不会被实际执行 查看TypeMock或Rhinomock,了解有助于您实现这一点的内容
感谢所有这些精彩的答案,这些答案无疑将伴随着这个迷人的问题。您应该使用模拟框架来模拟print方法,这样它就永远不会被实际执行 查看TypeMock或Rhinomock,了解有助于您实现这一点的内容 这是使用TypeMock时的外观:
Mock mock = MockManager.Mock<PrintManager>();
mock.ExpectCall("Print");
Mock Mock=MockManager.Mock();
mock.ExpectCall(“打印”);
然后在测试中执行调用此方法的代码。然后,这将拦截打印调用,文档将不会发送到打印机,但您仍然可以在打印期间对业务逻辑进行单元测试。我通过创建一台打印到NUL设备的Windows打印机来完成此操作。
这是非常简单的,尽管Windows版本之间的细节有点不同:只需创建一个本地打印机,并指定NUL作为本地端口,“Generic”作为制造商,“Generic/Text Only”作为打印机型号。谢天谢地,我们有TypeMock,这个解决方案肯定会起作用。然而,我仍然很好奇是否有一个与/dev/null.Brilliant相当的Windows,这为我省去了很多麻烦:)使用空打印机的最大优点是可以将其设置为默认打印机。这样,您就不会在远程办公室打印机上打印东西时感到尴尬(因为当您连接到不同的网络时,Windows 7会使用默认打印机执行一些奇怪的操作)