2008-12-17 84 views
3

我需要为将要打印文档的方法编写单元测试。有没有简单的方法将输出发送到与Windows相同的/ dev/null?我猜测,如果让我们的构建服务器在每次入住时打印一份文档,将很快变得昂贵。 ;)如何在.NET中打印到空打印机?

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

感谢所有精彩的答案,无疑将遵循这个迷人的问题。

回答

1

您应该使用一个模拟框架来嘲笑print方法,以便它永远不会被执行。

检查TypeMock或RhinoMocks的东西,这将有助于你做到这一点。

这是它会怎样看使用TypeMock:

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

那么你会在你的测试执行代码里面调用此方法。然后,这将拦截打印呼叫,并且文件不会被发送到打印机,但您仍然可以在打印时单元测试业务逻辑。

+0

谢天谢地,我们有TypeMock,这个解决方案肯定会起作用。不过,我仍然很好奇,如果有一个相当于/ dev/null的Windows。 – 2008-12-17 15:09:25

13

我通过创建打印到NUL设备的Windows打印机来完成此操作。 虽然Windows版本之间的细节有所不同,但这很简单:只需创建本地打印机并将NUL指定为本地端口,将“Generic”指定为制造商,将“Generic/Text Only”指定为打印机型号。

+0

辉煌,为我节省了大量的汗水:) – Lunatik 2010-06-24 13:25:18