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
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
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
$config['databases']['mysql']['username'] = 'yiitest';
$config['databases']['mysql']['password'] = 'changeme';
This section is under construction
Start test stack and enter PHP container
cd tests
docker-compose up -d
docker-compose run --rm php bash
Run a group of unit tests
$ vendor/bin/phpunit -v --group base --debug
Run phpunit directly
cd tests
docker-compose run --rm php vendor/bin/phpunit -v --group caching,db
docker-compose run --rm php vendor/bin/phpunit -v --exclude base,caching,db,i18n,log,mutex,rbac,validators,web
cd tests
docker-compose -f docker-compose.cubrid.yml up -d
docker-compose -f docker-compose.cubrid.yml run --rm php vendor/bin/phpunit -v --group cubrid
experimental
- needs 3.5 GB RAM, Docker-host with >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
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}
cd tests
sh test-local.sh default
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