Java Spock框架:如何创建自定义数据提供程序

Java Spock框架:如何创建自定义数据提供程序,java,spock,spring-test,spring-test-mvc,spock-reports,Java,Spock,Spring Test,Spring Test Mvc,Spock Reports,我的工作对象是: 春季MVC 弹簧MVC测试 斯波克框架 关于Spock使用@Unroll我对where块有以下情况 我可以有以下几点: where: "Internal" uriRequestReport << [ControllerSupportTest.createUrl1(), ControllerSupportTest.createUrl2()] methodNameReport << [ControllerSupportTest.METH

我的工作对象是:

  • 春季MVC
  • 弹簧MVC测试
  • 斯波克框架
关于Spock使用
@Unroll
我对
where
块有以下情况

我可以有以下几点:

where: "Internal"

    uriRequestReport << [ControllerSupportTest.createUrl1(), ControllerSupportTest.createUrl2()]
    methodNameReport << [ControllerSupportTest.METHODNAME_FINDONE_BYID, ControllerSupportTest.METHODNAME_FINDONE_BYID ]
[uriRequestReport, methodNameReport, moreVariablesifExists] << [MyDataSetUtil.theMethod()]
在此之前,我有两种问题

  • 我必须始终控制柜台
  • 如果为
    where
    块添加新变量,如
    mediaType
    ,则必须创建一个新方法,如
    methodNames()
  • 我必须始终为数组中的每个项目重复相同的数据,例如
    ControllerSupportTest.METHODNAME\u FINDONE\u BYID
  • 对于前两点,其反映如下:

    例如:

    public static String[] mediaTypes(){
            String[] mediaTypes = (String[]) createArray(MediaType.APPLICATION_XML_VALUE);      
            return mediaTypes;
        }
    
    我需要更实用的东西

    我也从SO那里读了下面的帖子

    • (上面的源代码)
    但就我的情况而言,我还不想使用CSV

    其他方法是通过SQL,例如:

    但是,在我的情况下,我还不想使用SQL

    对我来说,这种方法更有趣:

    在该职位上,他:

    where:
      [_, name, gender, expected] << new MultilineProvider(source: userData)
    
    要求

    我希望通过
    MyDataSetUtil.theMethod()
    (参见上面显示的行)返回一个集合,其中每个项表示与

        uriRequestReport << [ControllerSupportTest.createUrl1(), ControllerSupportTest.createUrl2()]
        methodNameReport << [ControllerSupportTest.METHODNAME_FINDONE_BYID, ControllerSupportTest.METHODNAME_FINDONE_BYID ]
    
    uriRequestReport只需编写method(),它将返回一组条目,其中每个条目都有一次测试运行所需的所有数据。URL的ArrayList、方法名的ArrayList和其他数据的ArrayList。然后将所有列表放在一个大的ArrayList或map中并返回此对象

    {
     "urls":[list of urls]
     "methods":[list of methodNames]
     "otherdata":[listOfOtherData]
    }
    
    直接返回映射,或将这些映射制作成arraylist。

    您可以尝试以下操作:

    where: "Internal"
    
    uriRequestReport << [ControllerSupportTest.createUrl1(), ControllerSupportTest.createUrl2()]
    methodNameReport = [ControllerSupportTest.METHODNAME_FINDONE_BYID]
    
    其中:“内部”
    
    令人惊讶的是,这个问题没有标记到
    java
    。。。已经修好了。。。
    {
     "urls":[list of urls]
     "methods":[list of methodNames]
     "otherdata":[listOfOtherData]
    }
    
    where: "Internal"
    
    uriRequestReport << [ControllerSupportTest.createUrl1(), ControllerSupportTest.createUrl2()]
    methodNameReport = [ControllerSupportTest.METHODNAME_FINDONE_BYID]