2014-03-28 3 views
4

Spock은 정적 변수 만 블록에서 액세스 할 수 있도록 허용합니다.인스턴스 변수를 Spock 테스트의 섹션에서 사용하는 방법

Where 블록에서 어떤 인스턴스 변수를 사용할 수있는 방법이 있습니까?

+0

당신이하려는 일에 대한 코드 샘플이 있습니까? – brwngrldev

+0

where-block에서 인스턴스 변수를 사용할 수있는 해결 방법은 없습니다. 더 큰 목표를 해결할 방법이있을 수 있지만 설명해야합니다. –

+0

@PeterNiederwieser - 파생 클래스가 변수를 선언해야하므로 필드의 추상 getter를 선언하려고했는데 where 블록에서이 변수의 필드에 액세스하려고합니다. 파생 클래스에서 변수를 선언하면 작동하지 않지만 해결 방법을 찾았습니다. 파생 클래스에서는 변수를 선언하지 않았지만 getter에서 반환 된 익명 개체를 반환했습니다. –

답변

8

@Shared으로 인스턴스 변수에 주석을 달 수 있습니다 (http://spockframework.github.io/spock/docs/1.0/data_driven_testing.html#sharing-of-objects-between-iterations 참조).

주의 : 공유 인스턴스 변수는 반복 사이에 값을 유지하고 메소드간에 공유됩니다. 이것을 원하지 않으면 접근법을 사용하지 마십시오. 그러나 이해해 주시면 어쨌든 where 블록에서 테이블을 사용하여 변수 값을 초기화하므로 괜찮습니다.

+0

https://code.google.com/p/spock/wiki/SpockBasics#Fields – demon101

+0

다른 링크를 게시 해 주셔서 감사합니다. 2014 년 5 월부터 URL이 변경 되었기 때문에 원래 URL도 업데이트했습니다. – kriegaex

관련 문제