簡體   English   中英

單元測試和外部資源

[英]Unit Testing and External Resources

我是單元測試的新手,但是最近我看到了它如何非常有用。 我已經看到大多數單元測試都是自運行的。 實際上,大多數單元測試框架都提供了一種同時運行多個測試的方式(例如,對整個系統進行單元測試)。

我不知道; 在自運行單元測試中,您如何處理外部資源? 我喜歡測試整個系統並查看哪些類失敗的想法,但是例如,一個類可以從上傳的圖像創建縮略圖。 當測試依賴於上載圖像時,它將如何自動運行? 我會保留一個圖像目錄,並“假裝”在測試中上傳其中一個嗎?

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

如果您打算測試外部資源,那么它將是集成測試。 在純單元測試->測試外部資源中,您將必須模擬外部資源。 因此,在這種情況下,您將創建一個IDirectory接口,然后使用一個FakeDirectory類,然后使用FakeDirectory來“上傳”圖像。 當您實際使用該應用程序時,您將傳遞一個實際目錄。

在集成測試中,您可以有一個安裝程序類,該類將完成所有安裝工作,然后進行測試。

如果您需要測試用戶輸入會發生什么情況,則實際上確實需要一些樣本數據。 單元測試中應存在一個包含圖像,文本文件,PDF或其他所需目錄的目錄。 或者,您可以在測試中以編程方式生成隨機數據。

是的,理想情況下,創建縮略圖的類可以使用您作為單元測試目錄中的資源提供的占位符圖像。 您應該能夠孤立地測試該類,並盡可能減少對應用程序其余部分的依賴。 這就是人們建議將您的代碼設計為“可測試的”時的意思。

模擬外部依賴項。 我沒有使用php進行模擬的真正經驗,但是我看到在線上有足夠的資源只是在搜索模擬和php而已完成

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM