Groovy 在spock框架中的功能之间共享代码
我用斯波克做测试 对于规范S,我有三个不同的特性F1、F2和F3 我有我的功能与给定,当,然后部分,但我想分享之间的代码给定和当,因为这几乎是相同的,除了当时的一部分 伪代码:Groovy 在spock框架中的功能之间共享代码,groovy,spock,Groovy,Spock,我用斯波克做测试 对于规范S,我有三个不同的特性F1、F2和F3 我有我的功能与给定,当,然后部分,但我想分享之间的代码给定和当,因为这几乎是相同的,除了当时的一部分 伪代码: class S extends Specification { def 'f1' () { given: redundantcode('file1') then: redundantcode_2_with_no_param when: valuable_code_1
class S extends Specification {
def 'f1' () {
given:
redundantcode('file1')
then:
redundantcode_2_with_no_param
when:
valuable_code_1
}
def 'f2' () {
given:
redundantcode('file2')
then:
redundantcode_2_with_no_param
when:
valuable_code_2
}
def 'f3' () {
given:
redundantcode('file3')
then:
redundantcode_2_with_no_param
when:
valuable_code_3
}
}
我正在寻找一种方法来避免给定部分和when部分中的重复代码。您可以在测试类中编写一个方法。例如:
void redundantcode_2_with_no_param() {…}
请注意,如果使用“def”而不是“void”,则无论方法中的最后一行返回什么,都将从方法中返回。如果为空,则可能导致测试失败。您是否正在寻找使用数据表或数据管道的参数化测试方法 例如,您可以执行以下操作:
def 'f1' () {
when:
redundantcode(fileName)
then:
redundantcode_with_no_param
then:
valuable_code_3
where:
fileName << ['file1', 'file2', 'file3']
}
def'f1'(){
什么时候:
冗余代码(文件名)
然后:
带参数的冗余代码
然后:
有价值的代码3
哪里:
文件名在你说“给定”和“何时”之前,这个想法更多的是与给定共享所有部分,然后将部分包含在一行中,现在是“然后”?我想这只是一个打字错误,不是吗?我不明白你在做什么。你能用一些例子更新你的问题吗?你希望代码看起来像什么?最好提供一个而不是伪代码代码。此外,它是在什么时候给出的,你写了什么时候给出的,这使得发现你真正想要做的事情更令人恼火。没有人可以编译和运行你的代码,然后为你重构它。嘿,克里斯托夫!首先你在问一个问题,然后当人们试图帮助你或问后续问题时,你忽略了他们那是什么样的行为?你愿意被这样对待吗?哦,对不起,我不在。真的很抱歉。我在找那个。