Yii 2.0 Unit tests ================== DIRECTORY STRUCTURE ------------------- data/ models, config and other test data config.php this file contains configuration for database and caching backends framework/ the framework unit tests runtime/ the application runtime dir for the yii test app HOW TO RUN THE TESTS -------------------- Make sure you have PHPUnit installed and that you installed all composer dependencies (run `composer update` in the repo base directory). Run PHPUnit in the yii repo base directory. ``` phpunit ``` You can run tests for specific groups only: ``` phpunit --group=mysql,base,i18n ``` You can get a list of available groups via `phpunit --list-groups`. A single test class could be run like the follwing: ``` phpunit tests/framework/base/ObjectTest.php ``` TEST CONFIGURATION ------------------ PHPUnit configuration is in `phpunit.xml.dist` in repository root folder. You can create your own phpunit.xml to override dist config. Database and other backend system configuration can be found in `tests/data/config.php` adjust them to your needs to allow testing databases and caching in your environment. You can override configuration values by creating a `config.local.php` file and manipulate the `$config` variable. For example to change MySQL username and password your `config.local.php` should contain the following: ```php 4.5 GB is recommended for testing - database CLI `tsgkadot/mssql-tools` Example commands cd tests Using a shell docker-compose run --rm sqlcmd sqlcmd -S mssql -U sa -P Microsoft-12345 Create database with sqlcmd $ sqlcmd -S mssql -U sa -P Microsoft-12345 -Q "CREATE DATABASE yii2test" Create database (one-liner) docker-compose run --rm sqlcmd sqlcmd -S mssql -U sa -P Microsoft-12345 -Q "CREATE DATABASE yii2test" Run MSSQL tests docker-compose run --rm php $ vendor/bin/phpunit --group mssql ### Build triggers curl -X POST \ -F token=${TOKEN} \ -F ref=travis \ -F "variables[DOCKER_MYSQL_IMAGE]=mysql:5.6" \ -F "variables[DOCKER_POSTGRES_IMAGE]=postgres:9.5" \ ${TRIGGER_URL} ### Run tests locally #### Via shell script cd tests sh test-local.sh default #### Via runner **experimental** docker-compose configuration runner: image: schmunk42/gitlab-runner entrypoint: bash working_dir: /project volumes: - ../:/project - /var/run/docker.sock:/var/run/docker.sock environment: - RUNNER_BUILDS_DIR=${PWD}/.. Start runner bash docker-compose -f docker-compose.runner.yml run runner Execute jobs via shell runner (with docker-compose support) $ gitlab-runner exec shell build $ gitlab-runner exec shell test