Как упоминалось в @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
, так как она даст вам хорошие имена методов тестирования.
Можете ли вы объяснить, что вы пытаетесь сделать? Я не могу понять, почему вы хотите определить тесты во время выполнения. –
. Я собираюсь протестировать множественную подачу формы с разными полями, имеющими значения с разными ограничениями. Если я создаю отдельный метод для каждого случая, он становится длинной рукописью с большим количеством повторяющегося кода. Поэтому я подумал, есть ли возможность инкапсулировать логику шаблона к некоторому методу или закрытию, а затем составить методы тестирования (например, через итерацию карты) непосредственно перед выполнением тестов? –
Разве вы не можете использовать таблицу данных? https://spockframework.github.io/spock/docs/1.0/data_driven_testing.html –