使用 Spock(groovy)数据表测试没有参数的方法



>假设我尝试测试的方法是:

private void deleteImages() {
//iterate files in path
//if file == image then delete
}

现在要使用 spock 框架的 groovy 来测试它,我正在制作 2 个文件,并调用该方法:

def "delete images"() {
given:
//create new folder and get path to "path"
File imageFile = new File(path, "image.jpg")
imageFile.createNewFile()
File textFile= new File(path, "text.txt")
textFile.createNewFile()
}
when:
myclass.deleteImages()
then:
!imageFile.exists()
textFile.exists()

这正在按预期工作。

但是,我想在此测试中添加更多文件(例如:更多图像文件扩展名,视频文件扩展名等(,因此使用数据表会更容易阅读。

如何将其转换为数据表?请注意,我的测试方法不采用任何参数(目录路径通过另一个服务模拟,为了简单起见,我没有在此处添加(。

我看到的所有数据表示例都是基于将输入更改为单个方法,但就我而言,设置是不同的,而该方法不接受输入。

理想情况下,在设置之后,我希望看到这样的表格:

where:
imageFileJPG.exists()   | false
imageFileTIF.exists()   | false
imageFilePNG.exists()   | false
videoFileMP4.exists()   | true
videoFileMOV.exists()   | true
videoFileMKV.exists()   | true

如果要使用数据表,则应将 DATA 放入其中而不是方法调用。

因此,测试可能如下所示:

@Unroll
def 'some test for #fileName and #result'() {
expect:
File f = new File( fileName )
myclass.deleteImages()
f.exists() == result
where:
fileName        | result
'imageFile.JPG'   | false
'imageFile.TIF'   | false
'videoFile.MKV'   | true
.....
}

最新更新