2010-10-09 73 views
2

我對單元測試很陌生,但我最近看到它是如何非常有用的。我已經看到大多數單元測試是自運行的。實際上,大多數單元測試框架提供了一次運行多個測試的方法(比如單元測試整個系統)。單元測試和外部資源

雖然我想知道;你如何處理自運行單元測試中的外部資源?我喜歡測試整個系統並查看哪些類失敗的想法,但是一個類可能會從上傳的圖像創建縮略圖。當它依賴上傳圖像時,該測試如何自行運行?我會保留一個圖像目錄,並「假裝」在測試中上傳其中的一個?

對此事的任何想法將不勝感激。

回答

1

我遇到過同樣的情況,而單元測試我的PHP類。有些函數可以在不使用任何其他資源(單元測試)的情況下進行測試,但許多函數執行文件讀/寫操作或需要數據庫訪問(集成測試)。爲了測試這些功能,我將單元測試與集成測試相結合。在我的setUp和tearDown測試類中,它可以加載數據庫模式或從類函數所需的本地test_data /目錄中獲取測試數據。

1

如果您需要測試用戶輸入發生了什麼,您確實需要一些示例數據。包含圖像,文本文件,PDF或任何其他需要的目錄應該在單元測試中。或者您可以在測試中以編程方式生成隨機數據。

2

如果您計劃測試外部資源,那麼它將是集成測試。在純粹的單元測試中 - >要測試外部資源,你必須嘲笑外部資源。因此,在這種情況下,您需要創建一個IDirectory接口,然後使用FakeDirectory類,然後使用FakeDirectory「上傳」圖像。而當你真正使用應用程序時,你會傳遞一個實際的目錄。

在集成測試中,您可以有一個設置類,它可以完成所有工作,然後進行測試。

1

是的,理想情況下,創建縮略圖的類可以使用您提供的佔位符圖像作爲單元測試目錄中的資源。你應該能夠獨立地測試這個類,儘可能少地依賴於你的應用程序的其他部分。當他們推薦將代碼設計爲「可測試」時,這就是人們的意思。

1

模擬外部依賴關係。我沒有真正的經驗嘲笑在PHP中,但我已經看到足夠的資源,只是谷歌搜索模擬和PHP,它正在執行