2013-07-09 3 views
2

스프링 환경에서 구성된 규칙을 Spock 사양에 삽입하려고합니다.spock 사양에 규칙 삽입


@ContextConfiguration(locations=["spring.xml"]) 
class TestSpec extends Specification { 
    @Rule @Inject //@Autowired 
    public ActivitiRule activitiRule; 

    @Deployment 
    def "Process test"() { 
    when: 
    //... 
    then: 
    //... 
    } 
} 

문제는 스팍이 @Inject 또는 @Autowired 주석을 존중하지 않고 자체적으로 규칙을 인스턴스화하는 것입니다. JUnit에서는 예상대로 작동합니다. Spock에 규칙을 삽입 할 수 있습니까?

답변

1

재미있는 유스 케이스. 문제는 Spock의 규칙 확장이 Spock의 Spring 확장이 그것을 주입하기 전에 규칙을 호출한다는 것입니다. 이 문제를 해결할 수도 있습니다. 괜찮 으면 http://issues.spockframework.org에 문제를 제출하십시오. 현재로서는 MethodRule (TestRule과 반대 됨) 주입 만 예상대로 작동합니다.

당신에 대한 규칙을 작성하는 경우
+1

덕분에, 난 내가 대답으로 게시 해결 방법으로 자신을 도와 문제 https://code.google.com/p/spock/issues/detail?id=320를 만들었습니다. –

1

만큼이 상자 밖으로 작동하지 않는, 내가 찾은 가능한 해결 방법은 TestRule 대신 봄 TestExecutionListener을 사용하는 것입니다 (Issue 참조)는, 이것은 물론에만 유용 당신 자신. TestExecutionListener에서

당신은의 ApplicationContext에 액세스 할 수 있으며 당신이 필요로하는 모든 콩을 얻을 수 있습니다. 정보 주셔서