2008-10-01 95 views
4

這可能是一個有趣的問題。我需要測試一下,如果我能成功上傳和獲取PDF文件。這適用於基於文本的文件,但我只想檢查PDF。爲了運行這個單元測試,我需要一個PDF文件。有幾個選項。我可以創建一個虛擬PDF文件並將其存儲在某個文件夾中,然後讀取該文件並將該文件保存到系統中。但現在,我的單元測試依賴於PDF文件。因此,任何運行單元測試的人都必須擁有PDF文件,這種文件有點不好。爲單元測試清單創建文件

另一種方法是創建一個PDF文件。這不是什麼大問題,因爲我可以簡單地用.pdf擴展名創建一個虛擬文件,或者我甚至可以使用一些PDF第三方工具來創建PDF文件。

另一種方法是將PDF文檔作爲嵌入式資源嵌入,然後從程序集中提取該文檔。

您認爲處理此問題的最佳方法是什麼?

回答

7

將包含您的測試的PDF文件保存在資源目錄中。你的測試應該儘可能簡單,創建文件只是一個可能失敗的點。

1

我通常會在需要外部內容的邊測試中添加一個真實文件。這樣您就可以使用真實文件進行測試,並且可以輕鬆地將其替換爲不同類型的內容測試。

1

我認爲最好儘可能多地處理「真實」對象。儘管引入「模擬」(在這種情況下,它不是確切的術語),但只有在處理測試數據集不可行時,對象才能提供幫助。我不認爲在你的版本控制系統中放置一個測試文件是一件大事,所以最好使用它,而不是寫很多可能導致其他錯誤和測試的代碼。

使用PDF也非常接近預期的平均文件。

0

我的問題是,如果我把一個文件放在一個不同的目錄中。讓我們說在單元測試下的資源,然後我不需要文件的完整路徑來訪問它。我正在手動運行我的測試。另外,當我移動到另一臺機器並將我的解決方案放在具有不同名稱的文件夾中時,文件的路徑會變得混亂。

除非有某種方式可以從我的應用程序(應該有)訪問項目的文件夾。

+0

你不使用源代碼管理?只需將文件放入該文件中,並且所有人都可以獲得相同的佈局。那有什麼問題? – 2008-10-01 16:42:20

1

將pdf文件(或帶有pdf擴展名的虛擬文件)添加到資源是一種方法。您應該能夠通過相對路徑(例如.... \ bla \ foo.pdf)從您的測試單元訪問它。

並且不要試圖創建一個有效的pdf文件,只是爲了測試您是否具有讀取或寫入權限。 KISS principle適用...