Groovy SpockExecutionException:数据提供程序没有数据
我做了大量的搜索,虽然我找到了一些点击,但似乎没有一个是非常有用的 我只做过几次数据提供者,但它似乎非常适合这个。我有以下静态方法:Groovy SpockExecutionException:数据提供程序没有数据,groovy,spock,unroll,Groovy,Spock,Unroll,我做了大量的搜索,虽然我找到了一些点击,但似乎没有一个是非常有用的 我只做过几次数据提供者,但它似乎非常适合这个。我有以下静态方法: static List<ContactPointType> getAddressTypes() { List<ContactPointType> result = new ArrayList<>(); for (ContactPointType cpType : ContactPointType.values(
static List<ContactPointType> getAddressTypes() {
List<ContactPointType> result = new ArrayList<>();
for (ContactPointType cpType : ContactPointType.values()) {
if (cpType.toString().endsWith("Addr")) {
result.add(cpType);
}
}
return result;
}
就像我说的,这看起来很简单。有人有什么想法吗?好吧,我已经尝试了数据提供程序功能,它可以正常工作:
@Unroll("max(1, #cpType) == #cpType")
class MyFirstSpec extends Specification {
def "let's try this!"() {
expect:
Math.max(1, cpType) == cpType
where:
cpType << dataProvider()
}
List<Integer> dataProvider() {
[2,3,4]
}
}
因此,我的想法是,在数据提供程序实现中,可能最终会出现一个空列表,这就是它不起作用的原因
另一种可能的情况是(老实说,这一想法不太现实),Groovy/Java互连搞砸了
因此,在总结决议方面:
org.spockframework.runtime.SpockExecutionException: Data provider has no data
at org.spockframework.runtime.JUnitSupervisor.afterFeature(JUnitSupervisor.java:191)
at org.spockframework.runtime.BaseSpecRunner.runFeature(BaseSpecRunner.java:236)
@Unroll("max(1, #cpType) == #cpType")
class MyFirstSpec extends Specification {
def "let's try this!"() {
expect:
Math.max(1, cpType) == cpType
where:
cpType << dataProvider()
}
List<Integer> dataProvider() {
[2,3,4]
}
}
List<Integer> dataProvider() {
[] // returns an empty list
}
org.spockframework.runtime.SpockExecutionException: Data provider has no data
at org.spockframework.runtime.JUnitSupervisor.afterFeature(JUnitSupervisor.java:180)
at org.spockframework.runtime.BaseSpecRunner.runFeature(BaseSpecRunner.java:239)