Я разрабатываю приемочный тест для веб-службы. Тесты запускаются через Specflow и используют SQL Server CE как базу данных. Служба разделяет БД с другими приложениями и модулями и использует некоторые данные, созданные через одно из этих приложений.Как автоматические приемочные испытания используют начальное состояние?
С точки зрения моего продукта, есть два типа «данные»:
- Данные, которые мы только потребляем
- Данные, которые мы создаем/изменить
Перед запуском в тестовом примере вы настроили начальное состояние базы данных. Для только потребляемых данных единственный способ инициализации данных - вставка непосредственно в базу данных. Но для управляемых данных мы либо можем установить состояние непосредственно в БД, либо сделать это, как пользователь, сделав это, вызвав API.
Например, я хочу проверить, что мой метод 'updateItem' корректно обновляет цену элемента до 'y'. Чтобы выполнить этот метод, мне нужно настроить мою базу данных с помощью начального элемента с ценой «x». Есть два способа сделать это:
- Установить состояние элемента непосредственно в базе данных
- Вызова «CreateItem»
плюсов для первого метода является то, что я только выполнить метод Я хочу протестировать, поэтому, если тест завершился неудачно, только сбой по одной причине. Концы будут заключаться в том, что если в будущем состояние созданного элемента изменится (добавив новое поле), мне нужно внести это изменение в начальное состояние вручную.
С другой стороны, со вторым методом плюсы и минусы были бы противоположными. Тест может потерпеть неудачу, потому что «createItem» потерпел неудачу, хотя некоторые тестовые среды скажут вам, что это было настроено на то, что не удалось, а не на фактический тест. Но независимо от того, какие изменения происходят в 'createItem', эти изменения автоматически включаются в ваш тест, и вам не нужно обновлять исходное состояние вручную.
Любые советы очень ценятся.
Я должен согласиться с Сэмом, но именно поэтому я бы * лично * никогда не использовал БД в тестах. Как я сказал в http://stackoverflow.com/questions/17047130/specflow-integration-testing-with-database-patterns, издеваются над этим! :-) – AlSki