Протестируйте метод без параметров, используя таблицу данных Spock (groovy) - PullRequest
0 голосов
/ 09 января 2020

Предполагается, что метод, который я пытаюсь протестировать:

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

Теперь, чтобы протестировать это с помощью 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()

Это работает, как ожидалось.

Однако я хочу добавить больше файлов к этому тесту (например, больше расширений файлов изображений, расширений видеофайлов и т. Д. c), и, следовательно, использование таблицы данных будет проще для чтения.

Как я могу преобразовать это в таблицу данных? Обратите внимание, что мой метод тестирования не принимает никаких параметров (путь к каталогу проверяется с помощью другой службы, которую я не добавил здесь для простоты).

Все примеры таблиц данных, которые я видел, были основаны на изменении входных данных для единственный метод, но в моем случае настройка отличается от метода, а метод не требует ввода данных.

В идеале, после настройки я хотел бы увидеть такую ​​таблицу:

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

1 Ответ

3 голосов
/ 09 января 2020

Если вы хотите использовать таблицу данных, вы должны поместить туда 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
    .....
}
...