Automated Tests
PHPUnit is used to run automated tests on Kanboard.
Tests can be run across different databases (Sqlite, MySQL, and PostgreSQL) to ensure consistent results.
Requirements
- Linux/Unix machine
- PHP
- PHPUnit installed
- MySQL and PostgreSQL (optional)
- Selenium (optional)
- Firefox (optional)
Unit Tests
Testing with Sqlite
Sqlite tests use an in-memory database, so nothing is written to the file system.
The PHPUnit config file is tests/units.sqlite.xml. Run the following command from your Kanboard directory:
phpunit -c tests/units.sqlite.xml
Example output:
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)
Testing with MySQL
Ensure MySQL or MariaDB is installed on localhost.
The database is dropped and recreated for each execution. Use the config file tests/units.mysql.xml:
phpunit -c tests/units.mysql.xml
Testing with PostgreSQL
Ensure PostgreSQL is installed on localhost.
The database is recreated for each execution. Use the config file tests/units.postgres.xml:
phpunit -c tests/units.postgres.xml
Integration Tests
Integration tests primarily test the API by making real HTTP calls to the application running inside a container.
Requirements
- PHP
- Composer
- Unix operating system (Mac OS or Linux)
- Docker
- Docker Compose
Running Integration Tests
Integration tests use Docker containers. Commands to run tests:
# Run tests with Sqlite
make integration-test-sqlite
# Run tests with MySQL
make integration-test-mysql
# Run tests with PostgreSQL
make integration-test-postgres