【问题标题】:How to print to a null printer in .NET?如何在 .NET 中打印到空打印机?
【发布时间】:2008-12-17 14:43:40
【问题描述】:

我需要为打印文档的方法编写单元测试。有没有一种简单的方法可以将输出发送到 /dev/null 的 Windows 等效项?我猜让我们的构建服务器在每次签入时打印一个文档会很快变得昂贵。 ;)

理想情况下,这适用于我们的构建服务器(没有默认打印机)和我们的开发机器(有),所以我不想更改默认打印机。

感谢您在这个引人入胜的问题之后提供的所有精彩答案。

【问题讨论】:

    标签: .net printing


    【解决方案1】:

    我通过创建一个打印到 NUL 设备的 Windows 打印机来做到这一点。 这非常简单,尽管 Windows 版本之间的细节有所不同:只需创建一个本地打印机并将 NUL 指定为本地端口,将“Generic”指定为制造商,将“Generic / Text Only”指定为打印机型号。

    【讨论】:

    • 太棒了,帮我省了很多事:)
    • 拥有 NULL 打印机的最大优点是您可以将其设置为默认打印机。然后你就不用在远程办公室打印机上打印东西了(因为当你连接到不同的网络时,Windows 7 使用默认打印机会做一些奇怪的事情)
    【解决方案2】:

    您应该使用模拟框架来模拟打印方法,使其永远不会真正执行。

    查看 TypeMock 或 RhinoMocks,了解可以帮助您执行此操作的内容。

    这是使用 TypeMock 的样子:

    Mock mock = MockManager.Mock<PrintManager>();
    mock.ExpectCall("Print");
    

    然后,您将在测试中执行调用此方法的代码。这将拦截打印调用,文档不会发送到打印机,但您仍然可以在打印时对业务逻辑进行单元测试。

    【讨论】:

    • 谢天谢地,我们有 TypeMock,这个解决方案肯定会奏效。但是,我仍然很好奇是否有 /dev/null 的 Windows 等价物。
    猜你喜欢
    • 1970-01-01
    • 2012-10-11
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    相关资源
    最近更新 更多