Files
yii2/tests/README.md
Tobias Munk 478331efe8 updated build
- added git files to dockerignore
- updated local testing
- updated build on branches
2017-01-24 15:41:04 +01:00

145 lines
3.4 KiB
Markdown

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 `unit/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
<?php
$config['databases']['mysql']['username'] = 'yiitest';
$config['databases']['mysql']['password'] = 'changeme';
```
DOCKERIZED TESTING
------------------
*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
### Cubrid
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
### MSSQL
**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
### 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