mirror of
https://github.com/yiisoft/yii2.git
synced 2026-03-07 07:47:24 +01:00
172 lines
4.8 KiB
Markdown
172 lines
4.8 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 following:
|
|
|
|
```
|
|
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
|
|
<?php
|
|
$config['databases']['mysql']['username'] = 'yiitest';
|
|
$config['databases']['mysql']['password'] = 'changeme';
|
|
```
|
|
|
|
|
|
DOCKERIZED TESTING
|
|
------------------
|
|
|
|
Get started by going to the `tests` directory and copy the environment configuration.
|
|
|
|
cd tests
|
|
cp .env-dist .env
|
|
|
|
The newly created `.env` file defines the configuration files used by `docker-compose`. By default MySQL, Postgres and Caching services are enabled.
|
|
|
|
> You can choose services available for testing by merging `docker-compose.[...].yml` files in `.env`. For example, if you only want to test with MySQL, you can modify the `COMPOSE_FILE` variable as follows
|
|
|
|
> COMPOSE_FILE=docker-compose.yml:docker-compose.mysql.yml
|
|
|
|
When starting the stack now, you get containers for databases and caching servers to test with.
|
|
|
|
docker-compose up -d
|
|
|
|
After all services have been initialized and the stack is fully up and running enter the PHP container
|
|
|
|
docker-compose exec php bash
|
|
|
|
Run a group of unit tests
|
|
|
|
$ vendor/bin/phpunit -v --group base --debug
|
|
|
|
#### Examples for running phpunit in a separate container
|
|
|
|
docker-compose run php vendor/bin/phpunit -v --group caching,db
|
|
docker-compose run php vendor/bin/phpunit -v --exclude base,caching,db,i18n,log,mutex,rbac,validators,web
|
|
docker-compose run php vendor/bin/phpunit -v --exclude mssql,oci,wincache,xcache,zenddata,cubrid
|
|
|
|
> Note: Documentation about [installing additional extensions](https://github.com/yiisoft/yii2-docker/blob/master/docs/install-extensions.md) can be found at `yiisoft/yii2-docker`.
|
|
|
|
### Cubrid
|
|
|
|
> Note: Images for testing Cubrid are based on PHP 5, due to incompatibilities with PHP 7
|
|
|
|
cd tests/cubrid
|
|
docker-compose up -d
|
|
docker-compose run php vendor/bin/phpunit -v --group cubrid
|
|
|
|
### MSSQL
|
|
|
|
> Note: Images for testing MSSQL are based on `bylexus/apache-php7` (Ubuntu) since drivers are not available for Debian or Alpine.
|
|
|
|
**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/mssql
|
|
|
|
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 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
|
|
|
|
|