在运行时创建spock测试

时间:2016-08-06 20:21:34

标签: groovy metaprogramming functional-testing spock geb

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

或者有人可能建议任何解决方法?

提前致谢!

2 个答案:

答案 0 :(得分:1)

正如@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注释,因为它会为您提供很好的测试方法名称。

答案 1 :(得分:0)

你可以在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次