Установить атрибут Nunit TimeoutAttribute из SpecFlow - PullRequest
5 голосов
/ 23 февраля 2012

Я написал несколько длительных сквозных интеграционных тестов с использованием SpecFlow, но они терпят неудачу из-за тайм-аутов Nunit.

Добавление атрибута [Timeout (x)] в TestFixture решает проблему, но, конечно, перезаписывается при каждом обновлении функции.

Как я могу удалить или продлить тайм-аут таким образом, который будет соблюдать SpecFlow?

Ответы [ 3 ]

1 голос
/ 31 мая 2013

Как долго мы говорим? > 1 минута? Это должен быть полный интеграционный тест?

Я читал книгу с огурцами - она ​​предложила вам как можно больше мошенничать, чтобы ваши ДАННЫЕ шаги позволили сократить время, необходимое для запуска вещей. ДАННЫЕ шаги описывают прошлое.

У меня есть форма заявки, которая состоит из 5 разделов и может быть отправлена ​​только после заполнения всех разделов. Я хотел протестировать некоторые функциональные возможности, возникающие при отправке приложения. Первоначально мои операторы GIVEN управляли веб-страницей через Selenium, чтобы заполнить все 5 разделов формы, чтобы я мог отправить, я изменил это на одну команду SQL, чтобы установить приложение статус для всех разделов завершен. Это прервало около минуты от времени выполнения.

То, что я тестировал, - это поведение при отправке, заполнение разделов тестов выполняется в другом месте.

1 голос
/ 03 июня 2013

Как говорит @DisscCoder, добавьте категорию тега к сценарию в файле объектов и добавьте ловушку, соответствующую классу ловушек .... SpecFlow запускает код ловушки кода перед сценарием для всех сценариев, где строка соответствует.

namespace ClassLibrary1
{
    [Binding]
    public class Hooks1
    {               
        [BeforeScenario("LongTest")]
        public void BeforeScenario()
        {
             // Code to set Nunit timeout
        }                         
    }
}

Огурец:

@LongTest
Scenario: Calc Pi to 1m digits (long)
    Given I am computing PI
    And my precision is 1 million digits
    Then my result is 3.14...
1 голос
/ 11 апреля 2013

Я только начинаю понимать Specflow, но не могли бы вы реализовать собственный тег, который мог бы сделать это?Может быть, вы могли бы разместить их на хуках BeforeScenario или BeforeFeature?

...