У меня есть несколько интеграционных тестов C #, написанных с использованием стиля Given / When / Then, популяризированного cucumber. Я использую фреймворк, который в основном работает так же, как NBehave.
Повторяющаяся проблема, с которой я сталкиваюсь, - это проблема настройки и подключения всех состояний приложения, необходимых для интеграционного теста. Большинство моих тестов выглядят примерно так:
Given an empty system
And a new NetworkServer
And a new ServerDatabase
And a new Eventlogger
And a new Networkconnection
And a new LoggingClient
When the client logs a new event
Then it should appear in the server database
Как вы можете видеть, действие и утверждение - это отдельные строки, но у меня есть 6 строк «проводки». Почти все мои тесты повторяют эти 6 строк.
Это кажется мне запахом кода, но я не уверен, как с этим справиться. Я мог бы преобразовать 6 строк в одну (Given "a valid system..."
или что-то подобное), но похоже, что это заходит слишком далеко, и я бы скрывал слишком много информации.
Буду признателен за любые мысли других людей, имеющих больше опыта в этой области. Большое спасибо.