我需要为将要打印文档的方法编写单元测试。有没有简单的方法将输出发送到与Windows相同的/ dev/null?我猜测,如果让我们的构建服务器在每次入住时打印一份文档,将很快变得昂贵。 ;)如何在.NET中打印到空打印机?
理想情况下,这可以在我们的构建服务器(没有默认打印机)和我们的开发机器(可以)上工作,所以我不想更改默认打印机。
感谢所有精彩的答案,无疑将遵循这个迷人的问题。
我需要为将要打印文档的方法编写单元测试。有没有简单的方法将输出发送到与Windows相同的/ dev/null?我猜测,如果让我们的构建服务器在每次入住时打印一份文档,将很快变得昂贵。 ;)如何在.NET中打印到空打印机?
理想情况下,这可以在我们的构建服务器(没有默认打印机)和我们的开发机器(可以)上工作,所以我不想更改默认打印机。
感谢所有精彩的答案,无疑将遵循这个迷人的问题。
您应该使用一个模拟框架来嘲笑print方法,以便它永远不会被执行。
检查TypeMock或RhinoMocks的东西,这将有助于你做到这一点。
这是它会怎样看使用TypeMock:
Mock mock = MockManager.Mock<PrintManager>();
mock.ExpectCall("Print");
那么你会在你的测试执行代码里面调用此方法。然后,这将拦截打印呼叫,并且文件不会被发送到打印机,但您仍然可以在打印时单元测试业务逻辑。
我通过创建打印到NUL设备的Windows打印机来完成此操作。 虽然Windows版本之间的细节有所不同,但这很简单:只需创建本地打印机并将NUL指定为本地端口,将“Generic”指定为制造商,将“Generic/Text Only”指定为打印机型号。
辉煌,为我节省了大量的汗水:) – Lunatik 2010-06-24 13:25:18
谢天谢地,我们有TypeMock,这个解决方案肯定会起作用。不过,我仍然很好奇,如果有一个相当于/ dev/null的Windows。 – 2008-12-17 15:09:25