2013-02-06 47 views
4

我對測試有點新(可怕,呵呵),所以請原諒我,如果這是無知的。Spring 3.2是否支持用Spock進行測試

spock-spring 0.7-groovy-2.0是否與新的Spring 3.2版本兼容,這是因爲測試框架的變化?

我看過了兩個Spring 3.2 docs under Testing

除了Spock docs under News

但沒有什麼幫助我告訴新的Spring 3.2的測試框架是否仍然允許測試方面的斯波克規範是按照Spring 3.2 Testing(Spring 3.2 docs第11.3.4節)描述的方式進行配置,這樣我註釋的bean就是可注入的。

無論如何我都試過了,但是在加載測試上下文方面沒有成功,儘管不依賴注入bean的測試通過的很好。

我可以提供我的@ContextConfiguration嘗試的詳細信息(在上面引用的Spring 3.2 docs部分11.3.4中同時嘗試了locations=classes=模式),但是現在我的問題就是這樣:Spock規範測試上下文仍然配置爲使用Spring 3.2 ?.

如果是這樣,任何成功的例子將是偉大的(沒有看到任何與Spock的Spring 3.2)。

謝謝。

+0

這個答案很舊。希望每個人都使用Spring和Spock的更新版本。如果您需要理由,這可能有助於http://stackoverflow.com/a/43480494/378151 – Snekse

回答

3

據我所知,Spock的Spring集成應該可以在Spring 3.2中使用新的測試功能。相較於使用JUnit測試基於Spring的應用,唯一需要的變化(一如既往):

  • 測試類路徑卸下@RunWith註釋
  • spock-spring

注意,你可以不會使用擴展Spring測試基類的舊方法。相反,你必須使用基於註解的Spring測試方法。

如果您發現上述策略無效的情況(並且您有與JUnit一起使用的相同測試),請在http://issues.spockframework.org處提交問題。

1

在Peter的答案的啓發下,我發現測試環境設置得很好。以下是我使用,其運行正常:

PersonServiceSpec.groovy:

@ContextConfiguration(locations="classpath*:/PersonServiceSpec-context.xml") 
class PersonServiceSpec extends Specification { 

    @Autowired 
    PersonService personService; 

    def username 

    def setup() { 
     this.username = "tester" 
    } 

    def "Does search for username pull tester"() { 

     expect: "tester" == username; 
    } 

    def "PersonService exists"() { 
     expect: personService != null; 
    } 

} 

與放置在類路徑中(src /主/資源爲我的行家PROJ)這個PersonServiceSpec-context.xml中:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

<bean id="personSevice" class="<qualifiedname>.services.TPersonServiceImpl" > 
</bean> 

</beans> 

和一個殘片TPersonServiceImpl類,實現了我的PersonService接口方法。

測試通過。

相關問題