2012-01-22 34 views
2

我在STS中創建了簡單的Grails插件項目。我使用的是Spring Security Core插件,它增加了一些域類。我創建了一個集成測試,它只是創建一個域類(User)的一個實例,並保存它。我在運行集成測試得到以下錯誤:Grails集成測試:域類無法運行

Failure: testSomething(com.resonance.rwp.core.tests.UserServiceTests) 
groovy.lang.MissingMethodException: No signature of method: com.resonance.rwp.core.domain.User.save() is applicable for argument types:() values: [] 
Possible solutions: save(), save(boolean), save(java.util.Map), wait(), any(), wait(long) 
    at com.resonance.rwp.core.tests.UserServiceTests.setUp(UserServiceTests.groovy:14) 

我不明白,好像域類未通過GORM映射出於某種原因。我遇到的所有事情都涉及到人們試圖在單元測試中使用GORM,但我肯定正在進行集成測試。任何幫助深表感謝。

這裏是源,它是非常簡單的:

class UserServiceTests { 

@Before 
void setUp() { 
    User user = new User(username: "Test"); 
    user.save(); 
} 

@After 
void tearDown() { 
    // Tear down logic here 
} 

@Test 
void testSomething() { 
    fail "Implement me" 
} 
} 

我也嘗試了一切移動到測試本身。它顯然在setUp方法上失敗。

+0

顯示代碼爲測試類。 –

+0

它看起來像Gorm AST變換沒有出於某種原因運行。除了測試類之外,您還可以指定STS,Grails和Groovy-Eclipse的版本嗎?這可能會成爲STS中的一個錯誤,如果是這樣,最好的辦法就是在問題跟蹤器中提出問題:https://issuetracker.springsource.com/browse/STS –

+0

我已經添加了源代碼,謝謝幫助! – SoWeLie

回答

0

由於某種原因,它看起來像Grails AST變換沒有在這種情況下運行。我猜你正在運行Grails 2.0,但你其實並沒有說過。嘗試在STS內運行一個乾淨的版本(Project - > Clean ...)。

我在一個簡單的Grails 2.0項目中試過了。看起來像它適合我。我認爲你最好的選擇是創建一個簡單的Grails項目,解決這個問題,將它作爲zip文件導出並引發jira問題。 ​​

+0

這是Grails 2.0。也忘了提及它是一個插件項目。不知道這是否有所作爲。這是一個全新的項目,我確實嘗試了一個清潔。 – SoWeLie

+0

提出錯誤並附加該項目。 –

1

剛剛有了像你這樣的創建與Grails的2.0.0

時爲grails test-app運行,但是當爲grails test-app --integration運行工作的集成測試失敗的一些集成測試的一個問題。令我驚訝的是,單元測試以某種方式污染了測試環境。更令人驚訝的是,刪除一些自動生成的(即空的)單元測試也有訣竅!測試現在傳遞給兩個命令。

已經有關於這一主題的討論another question,他的單元測試遷移到的Grails 2.0.0的方式編寫測試(即JUnit 4中和Grails的測試混入),使他的集成測試所需的提問者工作,你可以看到如何在the docs中做到這一點。

如果我可以在爲此目的而構建的最小應用程序中進行復制,我將嘗試提交錯誤報告。希望這可以幫助!

2

我有這個問題太上新生成的插件,並且發現該問題是,新生成的插件不依賴於冬眠。我向BuildConfig.groovy添加了以下內容:

plugins { 
    runtime ":hibernate:$grailsVersion" 
} 

這導致問題消失。我不夠熟悉的Grails有任何的理論,爲什麼錯誤信息中暗示的持久性方法,如save的實際存在,但至少我得到它的工作:)

http://jira.grails.org/browse/GRAILS-9163?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel