2016-03-11 74 views
0

我試圖訪問Google App Engine項目中的/ WEB-INF /目錄下的靜態文件。Junit測試無法使用LocalServiceTestHelper訪問文件系統

以下代碼在運行dev服務器時工作正常,但在單元測試中失敗。

String name = "WEB-INF/myfiles/myfile.dat"; 
File file = new File(name); 
FileInputStream fis = new FileInputStream(file); 

但是,JUnit測試中的相同代碼會拋出FileNotFoundException異常。

爲什麼值得我設置LocalServiceTestHelper,以便所有數據存儲測試用例都能正常工作。

單元測試是否在不同的工作目錄下運行,如果是這樣,我該如何設置/更正?

+0

FileNotFoundException非常具有說明性。您的文件路徑需要進行調整,以便測試類可以找到實際的文件。 –

+0

未爆戰爭中沒有實際的檔案。 – chrylis

+0

@SandySimonton重點是我無法調整路徑,因爲GAE不會找到它,所以我在質疑如何調整junit運行時環境以鏡像GAE –

回答

1

我不認爲它與LocalTestServiceHelper(它配置AE服務的本地實現)有關。您正在運行測試的「當前文件夾」沒有[最初或複製到]的「WEB-INF」文件夾)。

我不知道你如何運行你的單元測試。一些IDE會將非源文件夾複製到「目標」文件夾,並且在某些情況下,您可以配置您的運行腳本(ant build.xml,maven pom.xml ...)爲您執行此類複製。

然而雖然可行的,因爲這是一個單元測試可能要考慮 分離源裝載部件(可以不同地設置用於 測試和生產)向共同的邏輯處理該源你是哪個 測試。

另一種選擇是模擬輸入源(例如,通過ServletContext.getInputStream讀取並嘲弄ServletContext返回 的內容)。