12. AST変換前
import spock.lang.*
class HelloSpock extends spock.lang.Specification {
def "length of Spock's and his friends' names"() {
expect:
name.size() == length
where:
name | length
"Spock" | 5
"Kirk" | 4
"Scotty" | 6
}
}
13年3月9日土曜日
13. import spock.lang.*
AST変換後
import org.spockframework.runtime.model.*
@SpecMetadata(line = 5, filename = 'HelloSpock.groovy')
public class HelloSpock extends spock.lang.Specification {
@FeatureMetadata(parameterNames = ['name', 'length'], ...)
public void $spock_feature_0_0(name, length) {
Object $spock_valueRecorder = new ValueRecorder()
SpockRuntime.verifyCondition(...)
this.getSpecificationContext().getMockController().leaveScope()
}
@DataProviderMetadata(line = -1, dataVariables = ['name'])
public java.lang.Object $spock_feature_0_0prov0() {
return ['Spock', 'Kirk', 'Scotty']
}
@DataProviderMetadata(line = -1, dataVariables = ['length'])
public java.lang.Object $spock_feature_0_0prov1() {
return [5, 4, 6]
}
public Object $spock_feature_0_0proc(Object $spock_p0, Object $spock_p1) {
Object name = $spock_p0
Object length = $spock_p1
return new Object[]
}
}
13年3月9日土曜日
14. フィールド
def date = new Date()
@FieldMetadata(name = 'date', line = 8, ordinal = 0)
private Object date
private Object $spock_initializeFields() {
date = new Date()
}
13年3月9日土曜日
15. @Sharedフィールド
@Shared
def date = new Date()
@Shared
@FieldMetadata(name = 'date', line = 8, ordinal = 0)
protected volatile Object $spock_sharedField_date
private Object $spock_initializeSharedFields() {
$spock_sharedField_date = new java.util.Date()
}
13年3月9日土曜日
28. super.setup()しない
class SubSpec extends BaseSpec {
def setup() {
super.setup()
...
}
}
SubSpec.groovy: 9: A base class fixture method should not
be called explicitly because it is always invoked
automatically by the framework @ line 9, column 9.
super.setup()
^
1 error
13年3月9日土曜日