Groovy 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

我在使用spock where块对对象列表进行参数化时遇到问题。ListInput值似乎不是从where子句获取的,而是始终为空值。我已经为字符串和其他基本类型验证了相同的功能,并且工作正常。 Spock是否支持参数化对象?如果是,这里的问题是什么

 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)中来工作。不管怎样,它现在运行良好。谢谢