Как стать автором
Обновить

Комментарии 15

А как насчет использовать кат?
Готово, извиняюсь)
Введение в топике настраивает на долгое повествование с примерами, графиками, проблемами и прочей технической информацией, но в реальности всё быстро обрывается так и не начавшись. Вы собираетесь писать продолжение, или ограничитесь этим?
Конечно собираюсь!
Такой пример можно было посмотреть и в документации селениума
Не судите строго) Не вижу смысла во введении приводить сложные примеры, поскольку в первой статье я не хотел описывать подробности.
Спасибо за начало, но после прочтения заголовка рассчитывал увидеть подробное описание
предусловие, т.е. некоторое состояние системы, при котором мы сможем выполнить необходимую проверку
Взять тот же пример с тестом авторизации пользователя, как лучше этого пользователя добавить в базу, что бы обеспечить атомарность тестов. Хотелось бы получить ответ в следующей статье. Спасибо.
Конкретно на ваш вопрос ответить могу и сейчас: How to: Create a data-driven unit test. Вообще хранение тестовых данных напрямую не связано с атомарностью тестов, под этим термином я понимаю применение шаблона функционального дизайна, т.е. один тест — одна логическая проверка.
Спасибо за ответ, почитаю статью.
P.S. Я под атомарностью тестов понимаю:
1. один тест — одна логическая проверка
2. работа тестов не зависит от порядка из запуска
3. до начала и после завершения теста система находиться в одинаковом состоянии
Не за что) По поводу последнего пункта не соглашусь, это не зона ответственности теста. Для выполнения этих операции предназначены [TestInitialize] и [TestCleanup], по сути это отдельные тесты.

[TestInitialize]
public void TestInitialize()
{
	Playback.PlaybackSettings.SearchTimeout = 1000;
}

[TestCleanup]
public void TestCleanup()
{
	Browser.Quit();
}
Я имел ввиду немного другой случай. Попробую пояснить на примере:
Мы хотим автоматически тестировать web приложение, используем для этих целей MSTest\NUnit\etc… + Selenium WebDriver\WatiN\etc…
Соответственно перед запуском тестов мы делаем publish\запускаем iis express\и т.д., в web.config connectionString указывает на тестовый инстанс базы. Потом наш web driver открывает определенны url (по которому доступен сайт). Запускается тест проверки логина юзера, перед началом данного теста нам нужно добавить юзера в тестовую базу, проверить функционал, и удалить его по окончании теста. Потом запускается следующий тест который имеет другие предусловия.
Вот у меня и возникло несколько вопросов:
1. Как удобней реализовать инициализацию и очистку данных при тестировании ASP.NET MVC 4 приложений в вышеописанном сценарии?
2. Стоит ли использовать слой доступа к данным приложении для инициализации и очистки БД?

Спасибо.
У нас делается тоже самое.
Первым делом разделите действия: разворот тестового окружения и тестовая инициализация. Разворот окружения делается отдельно от тестов, это скрипты или батники в простом случае, либо, например, подготовка окружения средствами Team Foundation Server. При развороте происходит откат виртуальной машины к чистому снапшоту, установка и настройка продукта. Обычно после разворота происходит снятие «снимка системы» — бэкап базы либо вообще снапшот виртуальной машины.
А вот инициализацию теста (восстановление базы из бэкапа, импорт пользователей) логично размещать в TestInitialize, как и очистку (удаление пользователя либо откат базы) в TestCleanup. В этом случае инициализация это уже часть тестового проекта.
Насчет слоя — конечно стоит, не будут же низкоуровневые запросы к БД находиться в тестах? Реализуйте отдельный хелпер, например DatabaseInitializer.
Спасибо за пояснение :) Буду пробовать.
Вспомнилась другая поговорка: кто рано встаёт, тот потом весь день спит.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории