Groovy 在运行时创建spock测试

Groovy 在运行时创建spock测试,groovy,metaprogramming,functional-testing,spock,geb,Groovy,Metaprogramming,Functional Testing,Spock,Geb,是否有可能在运行时创建spock测试?我试图在一个GebSpec中的一个循环中创建几个元方法,但在测试执行期间忽略了它们 或者有人可以建议一些解决办法 提前谢谢 正如@Tim所提到的,数据表是一条出路。 您不需要在数据表中复制代码,您可以使它们完全动态 @Unroll def "Check form submit params: '#login', '#pwd'. Expected - #result"(String login, String pwd, boolean result) {

是否有可能在运行时创建spock测试?我试图在一个GebSpec中的一个循环中创建几个元方法,但在测试执行期间忽略了它们

或者有人可以建议一些解决办法


提前谢谢

正如@Tim所提到的,数据表是一条出路。 您不需要在数据表中复制代码,您可以使它们完全动态

@Unroll
def "Check form submit params: '#login', '#pwd'. Expected - #result"(String login, String pwd, boolean result) {
    setup:
      // do your test
    where: [login, pwd, result] << [ [ "user", "qwerty",  true], [ "user", "1234",  false] ]
}
@Unroll
def“检查表单提交参数:'#login','#pwd'。应为-#result”(字符串登录,字符串pwd,布尔结果){
设置:
//做你的测试

其中:[login,pwd,result]您可以在where子句中简单地编写循环/sql查询。测试套件将根据可能的数量运行

例如:

@Unroll
def "test suite for each student"(){
  given: ""
    .......................
  and :  ""
    .......................
  then:  ""
    ........................
  where: ""
    for (StudentList student : list){ 
      //operations
      //load the values in the variables such as there numbers or ids
 }
}

如果循环对10名学生是真的,那么套件将执行10次

你能解释一下你想做什么吗?我想不出你为什么要在运行时定义测试我将测试表单的多次提交,不同的字段具有不同的约束值。如果我为每种情况创建一个单独的方法,它将变成一个lo用大量重复的代码编写手稿。因此我想是否有可能将样板逻辑封装到某个方法或闭包中,然后编写测试方法(例如,通过迭代映射)就在测试执行之前?你不能只使用数据表吗?由于一些代码重复和硬编码,我试图避免使用数据表,但似乎我没有选择。谢谢。我需要在功能测试中提交表单。但无论如何,海鸥的答案是合适的。