Groovy spock中对象的参数化
我在使用spock where块对对象列表进行参数化时遇到问题。ListInput值似乎不是从where子句获取的,而是始终为空值。我已经为字符串和其他基本类型验证了相同的功能,并且工作正常。 Spock是否支持参数化对象?如果是,这里的问题是什么Groovy spock中对象的参数化,groovy,spock,Groovy,Spock,我在使用spock where块对对象列表进行参数化时遇到问题。ListInput值似乎不是从where子句获取的,而是始终为空值。我已经为字符串和其他基本类型验证了相同的功能,并且工作正常。 Spock是否支持参数化对象?如果是,这里的问题是什么 def "check Param Of List of Objects"() { expect: def a= hasflag(ListInput); a== flag where
def "check Param Of List of Objects"()
{
expect:
def a= hasflag(ListInput);
a== flag
where:
ListInput | flag
BOList1 | true
BOList2 | false
}
这里的BOList1类型是一个java ArrayList,它包含对象您还没有提供足够的信息来给出明确的答案,但我会尽力提供帮助 where块不仅仅是一个代码块,它更像是传递给方法的一系列参数。它可以做很多事情,但有时您需要以稍微不同的方式传递代码 注意:
-不允许使用Void方法(但您可以使用.with{}绕过此问题)
-迭代参数也不能是派生参数(由其他参数构造)
-如果您正在引用类级变量(在类内定义,但在该测试之外),则需要为这些变量提供@Shared注释,以便您的测试能够访问它们 如果您能提供更多关于您的列表来源的信息,将有助于我提供更好的建议
最后提示;显式地键入您的参数,以查看是否提供了更多信息
def "check Param Of List of Objects"(ArrayList listInput, boolean flag) {
expect:
flag == hasflag(ListInput);
where:
listInput | flag
BOList1 | true
BOList2 | false
}
您是否尝试过在没有大写字母的情况下调用它
boList1
groovy和spock版本是什么?我已经用“@Shared”注释了所有的引用变量,它对我很有用。我使用静态类变量来表示在测试之外有引用的列表。但是即使对于静态引用,当我不使用where块ie时,也可以通过直接将列表传递到hasflag(BOList1)中来工作。不管怎样,它现在运行良好。谢谢