2011-07-12 59 views
3

我有一段Java代碼,將一個目錄的內容壓縮成一個zip文件。JUnit爲一個目錄拉鍊

該方法的簽名如下:

/** 
* Zips the contents of the directory into the zip file. 
* @param directory the directory to zip 
* @param zipFilename the file name to zip into 
*/ 
public static void doZIP(String directory, String zipFileName) 
{ 
    //do the zipping 
} 

現在我必須寫一個JUnit測試情況下,用於上述方法。我應該測試什麼,以及如何?

注意:我不在尋找如何編寫JUnit測試用例的答案。

在此先感謝。

回答

5

創建一個臨時目錄並將一些文件寫入目錄。然後以臨時目錄作爲參數和給定的zip文件名稱調用該方法。測試該zip文件是否存在。然後測試你可以用ZipFile打開它,並在zip文件中找到預期的zip條目。

該方法沒有很好地指定其合同。例如,它沒有說明它在目錄不存在的情況下會發生什麼,或者如果不可能寫入zip文件,所以很難測試這些方面。但通常情況下,它是爲單元測試編寫方法的開發人員,因爲他知道角落情況。

1

理想的情況下你的測試將是一個成功,如果:

1)你可以創建一個有效的zip文件,它是由像7-Zip或Winzip的
2)當你把內容解壓你回來正是應用accessable你壓縮了什麼

我不確定你是否可以通過JUnit測試來促進這些測試,除非你已經爲應用程序構建瞭解壓縮功能,在這種情況下,運行代碼部分並執行手動測試。

如果你有函數在其創建後解壓縮zip,然後使用類似MD5哈希值來比較匹配的舊/新內容。

+1

我可以在Java中完成整個目錄的MD5嗎?它將包含單個文件以及其中的其他子目錄。 – user801138

+1

對創建的zip文件執行校驗和,並將其與預期的zip進行比較可能是實現它的方法。 – luketorjussen