我正在使用spock进行测试。
对于规格S,我有三个不同的特征F1,F2,F3。
我的功能是给定,当,然后部分,但我想在给定和何时,因为除了然后部分
之外几乎相同伪代码:
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
}
}
我正在寻找一种方法来避免在给定和部分时重复代码。
答案 0 :(得分:1)
You can just write a method in you test class. E.g.:
keeplimits
Note that if you use "def" instead of "void", whatever the last line in your method will return, will be returned from the method. That might lead to a failing test, if it is null.
答案 1 :(得分:1)
您是否正在寻找使用数据表或数据管道的参数化测试方法? Data Driven Testing
例如,你可以这样做:
def 'f1' () {
when:
redundantcode(fileName)
then:
redundantcode_with_no_param
then:
valuable_code_3
where:
fileName << ['file1', 'file2', 'file3']
}
这假设您的valuable_code_3也有些可重复。如果你在某处有比较,你可以将它扩展为在“result&lt;&lt; ['expectedResult1','expectedResult2','expectedResult3']等等的where子句中有第二个值。