2008-12-17 81 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