一直用System.getProperty("user.dir")來獲取文件目錄,我在執行單個方法調試和執行測試腳本的時候碰到一個問題,
我寫了一個類ElementInitialize初始化數據模塊,單個調試這個類的時候獲取的目錄為:D:\project\myTest,測試類RunCases調用ElementInitialize.getPageObjectManager()獲取數據時,得到的目錄是
D:\project\myTest\autoAppUI,autoAppUI是我項目模塊的名字,兩個路徑的不一樣導致我測試類執行的時候一直報空指針異常,為什么同一段代碼(System.getProperty("user.dir")),兩個地方執行獲取到的路徑會不一樣呢?
我去看了2個類的Run Configuration配置,ElementInitialize配置的Working directory是D:\project\myTest,而測試類RunCases配置的Working directory是$MODULE_WORKING_DIR$,用的是一個相對的路徑,包含了項目模塊的名稱。
我在調試ElementInitialize類的時候一直沒問題,執行測試類RunCases的時候一直報空指針,為了解決這個問題,我把ElementInitialize的Working directory也配置$MODULE_WORKING_DIR$,修改了路徑,兩邊都能執行了。
所以,System.getProperty("user.dir")這個句話的意思,我認為獲取的是程序運行時的工作目錄,不同類所屬的目錄不一樣,所以需要設置一致。
除了修改一致的working directory,還可以優化代碼,修改判斷釋放包含模塊目錄