2016-08-06 2 views
1

Есть ли возможность создавать тесты спока во время выполнения? Я попытался создать несколько мета-методов в цикле в GebSpec, но они игнорируются во время выполнения тестов.Создание тестов spock во время выполнения

Возможно, кто-нибудь может предложить любые обходные пути?

Заранее благодарен!

+1

Можете ли вы объяснить, что вы пытаетесь сделать? Я не могу понять, почему вы хотите определить тесты во время выполнения. –

+0

. Я собираюсь протестировать множественную подачу формы с разными полями, имеющими значения с разными ограничениями. Если я создаю отдельный метод для каждого случая, он становится длинной рукописью с большим количеством повторяющегося кода. Поэтому я подумал, есть ли возможность инкапсулировать логику шаблона к некоторому методу или закрытию, а затем составить методы тестирования (например, через итерацию карты) непосредственно перед выполнением тестов? –

+3

Разве вы не можете использовать таблицу данных? https://spockframework.github.io/spock/docs/1.0/data_driven_testing.html –

ответ

1

Как упоминалось в @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, так как она даст вам хорошие имена методов тестирования.

0

вы можете написать простой цикл записи/sql-запрос в where where. набор тестов работает в соответствии с количеством возможных вариантов.

пример:

@Unroll 
def "test suite for each student"(){ 
    given: "" 
    ....................... 
    and : "" 
    ....................... 
    then: "" 
    ........................ 
    where: "" 
    for (StudentList student : list){ 
     //operations 
     //load the values in the variables such as there numbers or ids 
} 
} 

если цикл верно для 10 студентов, пакет будет выполняться 10 раз

+0

Проблема, которая мне нужна для отправки формы в функциональный тест. Но в любом случае ответ Чайки подходит. –

Смежные вопросы