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