PHP / [Из песочницы] PHP Unit. Опыт тестирования классов, работающих с Базой Данных
2012-03-11 14:59:42
Тестировать или нет классы, взаимодействующие с Базой данных — вопрос куда более холиварный, чем ...
+ развернуть текст сохранённая копия
Тестировать или нет классы, взаимодействующие с Базой данных — вопрос куда более холиварный, чем спор «покрывать код тестами или нет». Просмотрев свой проект, нам стало очевидно, что львиная доля классов основана на взаимодействии с базой данных. Поэтому было однозначно решено: «тестированию быть».
Далее я хочу поделится опытом написания модульных тестов для кода, работающего с базой данных.
PHPUnit содержит расширение для тестирования базы данных. Расширение выполняет следующие функции:
- перевод базы данных в заранее известное состояние,
- выполнение необходимых модификаций данных,
- проверка, что в базе данных созданы ожидаемые записи.
К сожалению в этом списке отсутствует одна очень нужная нам фича — восстановление данных в состояние, в котором они находились до тестов. Я хочу предложить 2 варианта решения этой проблемы. Так же попутно остановлюсь на проблеме внешних ключей, которая часто возникает при накатывании не полных тестовых данных на «рабочую» базу.
Итак, я предлагаю 2 варианта решения проблемы: как после проведения юнит теста вернуть базу данных в исходное состояние:
Первый путь — «Транзакционный». Суть которого сводится к выполнению всего теста в рамках одной транзакции, и последующему rollback'у транзакции.
Второй — Перед выполнением теста скопировать структуру «рабочей» базы и проводить тестирование на ней.
Читать дальше →
Тэги:
dbunit,
test,
unit,
база
[Из песочницы] PHP Unit. Опыт тестирования классов, работающих с Базой Данных
2012-03-11 14:59:42
Тестировать или нет классы, взаимодействующие с Базой данных — вопрос куда более холиварный, чем ...
+ развернуть текст сохранённая копия
Тестировать или нет классы, взаимодействующие с Базой данных — вопрос куда более холиварный, чем спор «покрывать код тестами или нет». Просмотрев свой проект, нам стало очевидно, что львиная доля классов основана на взаимодействии с базой данных. Поэтому было однозначно решено: «тестированию быть».
Далее я хочу поделится опытом написания модульных тестов для кода, работающего с базой данных.
PHPUnit содержит расширение для тестирования базы данных. Расширение выполняет следующие функции:
- перевод базы данных в заранее известное состояние,
- выполнение необходимых модификаций данных,
- проверка, что в базе данных созданы ожидаемые записи.
К сожалению в этом списке отсутствует одна очень нужная нам фича — восстановление данных в состояние, в котором они находились до тестов. Я хочу предложить 2 варианта решения этой проблемы. Так же попутно остановлюсь на проблеме внешних ключей, которая часто возникает при накатывании не полных тестовых данных на «рабочую» базу.
Итак, я предлагаю 2 варианта решения проблемы: как после проведения юнит теста вернуть базу данных в исходное состояние:
Первый путь — «Транзакционный». Суть которого сводится к выполнению всего теста в рамках одной транзакции, и последующему rollback'у транзакции.
Второй — Перед выполнением теста скопировать структуру «рабочей» базы и проводить тестирование на ней.
Читать дальше →
Тэги:
dbunit,
test,
unit,
[cdata[php]],
база
PHP / Много текста про практику работы с PHPUnit/DbUnit
2012-02-26 00:00:33
Доброго времени суток, друзья!
Хочу поделиться опытом по борьбе с PHPUnit/DbUnit в связке с ...
+ развернуть текст сохранённая копия
Доброго времени суток, друзья!
Хочу поделиться опытом по борьбе с PHPUnit/DbUnit в связке с MySQL. Далее небольшая предыстория.
Краткая предыстория
В процессе написания одного веб-приложения возникла необходимость тестировать код на PHP, интенсивно взаимодействующий с БД MySQL. В проекте в качестве фреймворка модульного тестирования использовался порт xUnit — PHPUnit. В результате было принято решение писать тесты для модулей, непосредственно взаимодействующих с базой, подцепив плагин PHPUnit/DbUnit. Дальше я расскажу о тех трудностях, которые возникли при написании тестов и о том, каким способом я их преодолел. В ответ же хотелось бы получить комментарии знающих людей относительно корректности моих решений.
Читать дальше →
Тэги:
dbunit,
mysql,
php,
phpunit,
test,
unit,
костыль,
модульный,
суббота,
тестирование
Много текста про практику работы с PHPUnit/DbUnit
2012-02-26 00:00:33
Доброго времени суток, друзья!
Хочу поделиться опытом по борьбе с PHPUnit/DbUnit в связке с ...
+ развернуть текст сохранённая копия
Доброго времени суток, друзья!
Хочу поделиться опытом по борьбе с PHPUnit/DbUnit в связке с MySQL. Далее небольшая предыстория.
Краткая предыстория
В процессе написания одного веб-приложения возникла необходимость тестировать код на PHP, интенсивно взаимодействующий с БД MySQL. В проекте в качестве фреймворка модульного тестирования использовался порт xUnit — PHPUnit. В результате было принято решение писать тесты для модулей, непосредственно взаимодействующих с базой, подцепив плагин PHPUnit/DbUnit. Дальше я расскажу о тех трудностях, которые возникли при написании тестов и о том, каким способом я их преодолел. В ответ же хотелось бы получить комментарии знающих людей относительно корректности моих решений. Читать дальше →
Тэги:
test]],
[cdata[dbunit]],
[cdata[mysql]],
[cdata[phpunit]],
[cdata[php]],
[cdata[unit,
[cdata[бд]],
[cdata[костыль]],
[cdata[суббота]],
модульный,
тестирование]]
PHP / [Из песочницы] Unit-тестирование от начинающего начинающим
2012-02-16 19:02:30
Здравствуйте.
На написание статьи меня сподвигнул этот пост. В нём приведено описание ...
+ развернуть текст сохранённая копия
Здравствуйте.
На написание статьи меня сподвигнул этот пост. В нём приведено описание инструментов и некоторая теоретическая информация.
Сам я только начинаю разбираться в unit-тестировании и тестировании вообще, поэтому решил поделиться некоторой информацией касательно этого дела. А также систематизировать свои знания и навыки. Далее постараюсь объяснить процесс тестирования по шагам простым обывательским языком, так как нигде в интернете не нашёл разжёванного описания, по шагам так сказать. Кому интересно и кто хочет попробовать всё-таки разобраться, добро пожаловать.
Читать дальше →
Тэги:
php,
phpunit,
unit-testing
Страницы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...