Я везде читал о том, насколько они хороши, но по какой-то причине я не могу понять, как именно я должен что-то тестировать. Может ли кто-нибудь опубликовать пример кода и то, как они его протестируют? Если не беда :)
php
unit-testing
testing
tdd
отпустить
источник
источник
Ответы:
Существует третий «фреймворк», который намного легче освоить - даже проще, чем простой тест, он называется phpt.
Праймер можно найти здесь: http://qa.php.net/write-test.php
Редактировать: только что увидел ваш запрос на образец кода.
Предположим, у вас есть следующая функция в файле с именем lib.php :
Возвращается действительно простой и понятный параметр, который вы передаете. Итак, давайте посмотрим на тест для этой функции, мы назовем тестовый файл foo.phpt :
Вкратце, мы предоставляем параметру
$bar
значение"Hello World"
иvar_dump()
ответ на вызов функцииfoo()
.Чтобы запустить этот тест, используйте:
pear run-test path/to/foo.phpt
Для этого требуется рабочая установка PEAR в вашей системе, что довольно часто встречается в большинстве случаев. Если вам нужно установить его, я рекомендую установить последнюю доступную версию. Если вам нужна помощь в настройке, не стесняйтесь спрашивать (но укажите ОС и т. Д.).
источник
run-tests
?Для модульного тестирования можно использовать две среды. Simpletest и PHPUnit , что я предпочитаю. Прочтите учебники о том, как писать и запускать тесты на домашней странице PHPUnit. Это довольно просто и хорошо описано.
источник
Вы можете сделать модульное тестирование более эффективным, изменив свой стиль кодирования в соответствии с ним.
Я рекомендую просмотреть блог Google Testing Blog , в частности, сообщение о написании тестируемого кода .
источник
Я накатил свой, потому что у меня не было времени узнать чей-то другой способ делать что-то, это заняло около 20 минут, чтобы написать, 10, чтобы адаптировать его для публикации здесь.
Юнит-тестирование очень полезно.
это довольно долго, но это объясняет само собой, и внизу есть пример.
Это выводит:
источник
Получите PHPUnit. Он очень прост в использовании.
Тогда начните с очень простых утверждений. Вы можете многое сделать с AssertEquals, прежде чем заниматься чем-либо еще. Это хороший способ намочить ноги.
Вы также можете попробовать сначала написать свой тест (поскольку вы указали свой вопрос тегом TDD), а затем написать свой код. Если вы не сделали этого раньше, это откроет вам глаза.
источник
Для простых тестов и документации php-doctest очень удобен , и это действительно простой способ начать работу, поскольку вам не нужно открывать отдельный файл. Представьте себе функцию ниже:
Если вы сейчас запустите этот файл через phpdt (средство запуска командной строки php-doctest), будет запущен 1 тест. Доктест содержится внутри блока <code>. Doctest возник на Python и отлично подходит для предоставления полезных и работоспособных примеров того, как должен работать код. Вы не можете использовать его исключительно, потому что сам код будет засорять тестовыми примерами, но я обнаружил, что он полезен вместе с более формальной библиотекой tdd - я использую phpunit.
Этот первый ответ здесь хорошо подводит итог (это не unit vs doctest).
источник
phpunit - это, по сути, фреймворк для модульного тестирования php. есть также DocTest (доступный в виде пакета PEAR) и несколько других. Сам php тестируется на регрессии и тому подобное с помощью тестов phpt, которые также можно запускать через грушу.
источник
Тесты на кодирование во многом похожи на обычные модульные тесты, но очень эффективны в тех случаях, когда вам нужны имитации и заглушки.
Вот пример теста контроллера. Обратите внимание, как легко создаются заглушки. Как легко вы проверяете, что метод был вызван.
Также есть другие крутые штуки. Вы можете проверить состояние базы данных, файловую систему и т. Д.
источник
Помимо уже приведенных отличных предложений по фреймворкам тестирования, создаете ли вы свое приложение с помощью одной из веб-фреймворков PHP, в которую встроено автоматическое тестирование, например, Symfony или CakePHP ? Иногда наличие места, где можно просто добавить свои методы тестирования, снижает трение при запуске, которое некоторые люди связывают с автоматическим тестированием и TDD.
источник
Слишком много, чтобы повторно публиковать здесь, но вот отличная статья об использовании phpt . Он охватывает ряд аспектов phpt , которые часто упускаются из виду, поэтому, возможно, стоит прочитать его, чтобы расширить свои знания о php, помимо написания теста. К счастью, в статье также обсуждается написание тестов!
Основные темы обсуждения
источник
Я знаю, что здесь уже есть много информации, но, поскольку она все еще отображается в поиске Google, я мог бы добавить в список Chinook Test Suite . Это простой и небольшой фреймворк для тестирования.
С его помощью вы можете легко тестировать свои классы, а также создавать имитационные объекты. Вы запускаете тесты через веб-браузер и (пока еще нет) через консоль. В браузере вы можете указать, какой тестовый класс или даже какой тестовый метод запускать. Или вы можете просто запустить все тесты.
Скриншот со страницы github:
Что мне нравится в этом, так это то, как вы утверждаете тесты. Это делается с помощью так называемых «беглых утверждений». Пример:
И создание фиктивных объектов тоже очень просто (с плавным синтаксисом):
В любом случае, дополнительную информацию можно найти на странице github с примером кода:
https://github.com/w00/Chinook-TestSuite
источник