【发布时间】:2008-12-17 14:43:40
【问题描述】:
我需要为打印文档的方法编写单元测试。有没有一种简单的方法可以将输出发送到 /dev/null 的 Windows 等效项?我猜让我们的构建服务器在每次签入时打印一个文档会很快变得昂贵。 ;)
理想情况下,这适用于我们的构建服务器(没有默认打印机)和我们的开发机器(有),所以我不想更改默认打印机。
感谢您在这个引人入胜的问题之后提供的所有精彩答案。
【问题讨论】:
我需要为打印文档的方法编写单元测试。有没有一种简单的方法可以将输出发送到 /dev/null 的 Windows 等效项?我猜让我们的构建服务器在每次签入时打印一个文档会很快变得昂贵。 ;)
理想情况下,这适用于我们的构建服务器(没有默认打印机)和我们的开发机器(有),所以我不想更改默认打印机。
感谢您在这个引人入胜的问题之后提供的所有精彩答案。
【问题讨论】:
我通过创建一个打印到 NUL 设备的 Windows 打印机来做到这一点。 这非常简单,尽管 Windows 版本之间的细节有所不同:只需创建一个本地打印机并将 NUL 指定为本地端口,将“Generic”指定为制造商,将“Generic / Text Only”指定为打印机型号。
【讨论】:
您应该使用模拟框架来模拟打印方法,使其永远不会真正执行。
查看 TypeMock 或 RhinoMocks,了解可以帮助您执行此操作的内容。
这是使用 TypeMock 的样子:
Mock mock = MockManager.Mock<PrintManager>();
mock.ExpectCall("Print");
然后,您将在测试中执行调用此方法的代码。这将拦截打印调用,文档不会发送到打印机,但您仍然可以在打印时对业务逻辑进行单元测试。
【讨论】: