在运行时创建 spock 测试

Creating spock tests in runtime

是否有可能在运行时创建 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] ]
}

请注意 where 子句中的嵌套数组。它实际上可以是在运行时创建的完全动态数组。 另请注意 @Unroll 注释,因为它将为您提供漂亮的测试方法名称。

你可以简单的在where子句中写loop/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 次