我需要为打印文档的方法编写单元测试。有没有一种简单的方法将输出发送到Windows等效的/ dev / null?我猜测让我们的构建服务器在每次签入时打印文档都会很快变得昂贵。 ;)
理想情况下,这可以在我们的构建服务器(没有默认打印机)和我们的开发机器(这样做)上工作,所以我不想更改默认打印机。
感谢所有精彩的答案,毫无疑问会关注这个引人入胜的问题。
答案 0 :(得分:13)
我是通过创建一个打印到NUL设备的Windows打印机来实现的。 虽然Windows版本之间的细节有所不同,但这非常简单:只需创建本地打印机并指定NUL作为本地端口,将“Generic”指定为制造商,将“Generic / Text Only”指定为打印机型号。
答案 1 :(得分:1)
你应该使用一个模拟框架来模拟print方法,以便它永远不会被实际执行。
查看TypeMock或RhinoMocks可以帮助您完成此任务。
这是使用TypeMock的外观:
Mock mock = MockManager.Mock<PrintManager>();
mock.ExpectCall("Print");
然后你将在你的测试中执行代码,在其中调用此方法。然后,这将拦截打印调用,文档将不会发送到打印机,但您仍然可以在打印时对业务逻辑进行单元测试。