我正在爲現有的一組grails 2.1.1應用程序的現有測試添加第一個spock集成測試。使用運行時的試運行和測試都通過了:與其他集成測試一起運行時,Spock集成測試失敗 - 使用集成隔離成功:spock
grails test-app integration:spock CreditServiceSpec
(是的,一切都在默認的包 - 固定,這是在技術債務大量的工作將不會被批准......文件。)
然而,當我運行所有測試(Grails的測試應用程序),單元測試通不過,斯波克單元測試通過,集成測試通過,但我得到石破天驚整合的失敗:
|完成818集成測試,0失敗104001ms |運行1次spock測試... |失敗:CreditServiceSpec | groovy.lang.GroovyRuntimeException:無法調用構造函數:public org.codehaus.groovy.grails.test.support.GrailsTestAutowirer(org.springframework.context.ApplicationContext)with arguments:[] reason:java.lang.IllegalArgumentException at grails。 plugin.spock.IntegrationSpec。$ spock_initializeSharedFields(IntegrationSpec.groovy:33) |完成0次spock測試,33次失敗0次 |測試通過 - 查看報告中/用戶/ * /項目/ GrailsPlugins/DomainServices /目標/測試報告
我得到完全相同的異常是否我運行完整測試我建或以下,非常帶倒例如:
import grails.plugin.spock.IntegrationSpec
class CreditServiceSpec extends IntegrationSpec {
def setup() {}
def cleanup() {}
public void "sample"() {
setup:"Nothing to do here."
expect:"This is the truest of truths..."
true == true
}
}
我沒有裂開IntegrationSpec看着行33:
@Shared private autowirer = new GrailsTestAutowirer(applicationContext)
但確定如何/爲什麼ApplicationContext已不爲是p正確地超越了我,也許是我的問題的主旨。
有沒有人遇到過這種行爲,並找到了一種讓spock集成與其他測試一起玩的好方法?謝謝。
感謝您的反饋。 'grails clean'在這種情況下不是一個解決方法。雖然我希望移動到2.3。x此應用程序/案例的生存時間可能會阻止獲得足夠的優先權。如果這成爲現實,並且該版本確實提供了修復,我將確保在此回報。 – reverend
我覺得你在那裏。我不知道的東西可能會幫助您擺脫您的特定能力:完全有可能讓Grails應用程序在同一個Tomcat服務器上運行不同的版本。如果此項目包含在其自己的應用程序中,則可以嘗試克隆副本並在不同的Grails版本下運行它。 gvm可以幫助您在機器上快速獲得另一個Grails版本,而不會有太多麻煩。 http://gvmtool.net/ – jonnybot