2014-04-22 54 views
0

我遇到了一些應該運行測試的gradle任務的問題。由於這是螞蟻任務的遺留問題,所以我們不希望將它們包含到我們的測試套件中。特別是考慮到那些螞蟻在測試中,而那些由我們製造,定期使用的螞蟻則是使用spock和junit。帶有webcontext的Gradle測試任務無法使用實體

的問題是,這些測試是使用一些背景,當我運行在Eclipse IDE的那些測試其效果很好,但如果我嘗試去做某事喜歡它失敗:

task testNgTesting(type: Test, dependsOn: testClasses){ 
    useTestNG() 
    includes = ["**/*IT*"] 
} 

但是,當我嘗試使用該任務我得到的錯誤,如「org.hibernate.MappingException:未知的實體:」或「java.lang.IllegalArgumentException:沒有爲該名稱定義的查詢」

+0

試試'includes ['**/* IT *']'或'include'**/* IT *'' – Opal

+0

不幸的是,這不起作用。我的意思是上下文正在運行,測試也在運行。問題在於他們在上述消息中失敗。 – Qbix

+0

不知道然後:/ – Opal

回答

0

其實問題更深。 Gradle試圖變得聰明,從它定義的任何文件夾中將類文件放入類文件夾,並將所有其他文件放入資源中。當加載persistence.xml時,它會掃描註釋的實體(即build/resources/main),該實體從classpath root開始,用於存在它的文件夾。由於所有這些類都在build/classes/main中,因此無法找到它們。我所做的解決方法是引入兩個複製任務。一個是將persistence.xml複製到classes文件夾中,另一個是在測試完成後將該文件移回資源。您可能想要使用諸如 testNgTesting.finalizedBy(cleanAfterIntegrationTests)之類的東西來確保即使有一些測試失敗也會發生清理。

相關問題