2016-02-05 64 views
1

我有一個使用硒和testng開發的maven測試自動化項目。 這就是我與我的框架,這樣做的:Maven jar無法從src/test/resources文件夾的TestData表單中讀取數據

  1. 我在的src/main/java的主類和主類中我觸發的方法來動態地創建和運行TestNG的XML。
  2. 要運行的測試由src/test/resources中的XMLFlag.xls和TestNG.xlsx表確定。
  3. 我能夠使用「mvn test」命令成功運行測試腳本。

現在我想通過創建一個jar來運行我的整個項目。 我能夠使用「maven-assembly-plugin」創建一個具有所有依賴關係的jar,但我無法運行這些腳本,因爲src/test/resources中的測試數據表未被識別。

我下面得到一個錯誤信息: - 。

錯誤消息:\ SRC \測試\資源\ XMLFlag.xls(不能 找到路徑指定的系統)

你們能不能幫我一把!

FileInputStream fis = new FileInputStream(".\\src\\test\\resources\\XMLFlag.xls"); 
FileInputStream fis = new FileInputStream(".\\src\\test\\resources\\TestNG.xlsx"); 

我想的jar來讀取這些片所需的測試數據,並執行所述腳本: Project Structure

我在我的代碼作爲後述的路徑XMLFlag.xls和TestNG.xlsx 。

謝謝。

回答

0

首先,創建罐子時,從src/main/resourcessrc/main/java只有文件將出現在那裏。我建議您將資源從src/test/resources移至src/main/resources。您還可以配置maven-jar-plugin以包含這些文件,但需要更多配置。在src/main進行測試和測試的源代碼是好的。其次,一旦裝入罐子中,路徑src/<whatever>/resources變得不相關。您需要使用類加載器加載文件;否則你需要手動解壓你的jar並從解壓後的位置加載文件。
由於從src/main/resources文件出現在JAR文件的根目錄,加載文件,只是做

InputStream stream = YourClassName.class.getResourceAsStream("XMLFlag.xls"); 

注意YourClassName應該與你的類名來代替。
另請注意,您不能使用FileInputStream,因爲您沒有訪問文件(只是包含在jar文件中的東西)。

+0

Hi @Stepan Vavra,非常感謝你。我一直在努力設置這個......我按照你的建議進行了修改,並且能夠運行jar ..但是,我真的很想知道是否在src/main文件中包含測試數據文件/資源很好? –

+0

嗯,這取決於。 :-)你也可以從你的測試類(和資源)創建一個'test-jar'(參見https://maven.apache.org/plugins/maven-jar-plugin/test-jar-mojo.html);但是,這通常會導致問題。如果你不需要把測試放到jar中,你可以在測試類中使用src/test/java'文件夾,在測試資源中使用'src/test/resources'。這仍然有效(例如,如果你通過maven執行測試)。無論如何,在你的項目jar中測試類是錯誤的;應該避免。可以創建附加的* test-support * jar模塊,其中可以在'src/main'中進行測試。 –

+0

嗨@stepan vavra,感謝您的信息..我仍然有一些與我的帖子有關的查詢..我建議,我可以創建一個jar與我所有的測試和測試數據..但我認爲這不是100%正確的,因爲測試腳本必須運行不同的測試數據集。如果我的測試數據表打包在jar中,我將無法運行其他數據集的腳本..有一個解決方法呢? –

0

Maven讓編撰和測試SRC的資源之間的差異/主/資源和src /測試/資源,你有資源作用域在類範圍內的編譯測試和手:

  1. 解決方案是到2檔移動中的src/main /資源,並撥打電話:

    String file = "src/main/resources/XMLFlag.xls"; 
    FileInputStream stream1 = new FileInputStream (file1); 
    
  2. 第二種解決方案是更propore不是並進,共創中的src/test/java下一個測試類和資源,爲您的類並使用相同的測試範圍,即目標/測試T-類