Автоматизированные тесты
========================



[PHPUnit](https://phpunit.de/) используется для запуска автоматизированных тестов в Канборд.



Вы можете запускать тесты для разных баз данных (Sqlite, Mysql and Postgresql), чтобы убедится, что результаты будут одинаковые.



Требования[¶](#requirements "Ссылка на этот заголовок")
-------------------------------------------------------



-   Компьютер Linux/Unix



-   PHP cli



-   Установленный PHPUnit



-   Mysql и Postgresql (опционально)



Unit тесты[¶](#unit-tests "Ссылка на этот заголовок")
-----------------------------------------------------



### Тестирование с Sqlite[¶](#test-with-sqlite "Ссылка на этот заголовок")



Sqlite тестирование использует базу данных в памяти, без использования записи на файловую систему.



Конфигурационный файл PHPUnit - `tests/units.sqlite.xml`. Из директории Kanboard запустите команду `phpunit -c tests/units.sqlite.xml`.



Пример:



    phpunit -c tests/units.sqlite.xml



    PHPUnit 5.0.0 by Sebastian Bergmann and contributors.



    ...............................................................  63 / 649 (  9%)

    ............................................................... 126 / 649 ( 19%)

    ............................................................... 189 / 649 ( 29%)

    ............................................................... 252 / 649 ( 38%)

    ............................................................... 315 / 649 ( 48%)

    ............................................................... 378 / 649 ( 58%)

    ............................................................... 441 / 649 ( 67%)

    ............................................................... 504 / 649 ( 77%)

    ............................................................... 567 / 649 ( 87%)

    ............................................................... 630 / 649 ( 97%)

    ...................                                             649 / 649 (100%)



    Time: 1.22 minutes, Memory: 151.25Mb



    OK (649 tests, 43595 assertions)



### Тестирование с Mysql[¶](#test-with-mysql "Ссылка на этот заголовок")



У вас должна быть локально установлена база данных Mysql или MariaDb.



По умолчанию, используются следующие учетные данные:



-   Hostname: **localhost**

-   Username: **root**

-   Password: none

-   Database: **kanboard\_unit\_test**



При каждом выполнении база данных удаляется и создается снова.



Конфигурационный файл HPUnit - `tests/units.mysql.xml`. Из директории Kanboard запустите команду `phpunit -c tests/units.mysql.xml`.



### Тестирование с Postgresql[¶](#test-with-postgresql "Ссылка на этот заголовок")



У вас должен быть локально установлен Postgresql.



По умолчанию, используются следующие учетные данные:



-   Hostname: **localhost**

-   Username: **postgres**

-   Password: none

-   Database: **kanboard\_unit\_test**



Убедитесь, что пользователь `postgres` может создавать и удалять базу данных. База данных пересоздается при каждом выполнении теста.



Конфигурационных файл PHPUnit - `tests/units.postgres.xml`. Из директории Kanboard, запустите команду `phpunit -c tests/units.postgres.xml`.



Тесты интеграции[¶](#integration-tests "Ссылка на этот заголовок")
------------------------------------------------------------------



Фактически тестируются только вызовы API.



Реальные HTTP calls выполняются с этими тестами. Поэтому, необходим локальный экземпляр Канборда, который слушает на `http://localhost:8000/`.



Все данные будут удалены/изменены при тестировании. Более того скрипт будет сброшен и установлен новый ключ API.



1.  Запустите локольный экземпляр Канборда: `php -S 127.0.0.1:8000`



2.  Запустите тест в другом терминале



Этот же метод используется для запуска тестов для разных баз данных:



-   Sqlite: `phpunit -c tests/integration.sqlite.xml`

-   Mysql: `phpunit -c tests/integration.mysql.xml`

-   Postgresql: `phpunit -c tests/integration.postgres.xml`



Пример:



    phpunit -c tests/integration.sqlite.xml



    PHPUnit 5.0.0 by Sebastian Bergmann and contributors.



    ...............................................................  63 / 135 ( 46%)

    ............................................................... 126 / 135 ( 93%)

    .........                                                       135 / 135 (100%)



    Time: 1.18 minutes, Memory: 14.75Mb



    OK (135 tests, 526 assertions)



Непрерывная интеграция с Travis-CI[¶](#continuous-integration-with-travis-ci "Ссылка на этот заголовок")

--------------------------------------------------------------------------------------------------------



После каждого commit влитого в мой репозиторий, юнит тесты выполняются для 5 различных версий PHP:



-   PHP 7.0

-   PHP 5.6

-   PHP 5.5

-   PHP 5.4

-   PHP 5.3



При тестировании каждой версии PHP используются 3 поддерживаемые базы данных: Sqlite, Mysql and Postgresql.



Конфигурационный файл Travis - `.travis.yml` - находится в корневой директории Kanboard.





 



 



[Русская документация Kanboard](http://kanboard.ru/doc/)