README.md 3.66 KB
Newer Older
1 2 3
This directory contains various tests for the basic application.

Tests in `codeception` directory are developed with [Codeception PHP Testing Framework](http://codeception.com/).
Qiang Xue committed
4

5
After creating the basic application, follow these steps to prepare for the tests:
Qiang Xue committed
6

7 8 9 10 11 12 13 14 15 16 17 18 19
1. Install Codeception if it's not yet installed:

```
composer global require "codeception/codeception=2.0.*"
composer global require "codeception/specify=*"
composer global require "codeception/verify=*"
```

If you've never used Composer for global packages run `composer global status`. It should output:

```
Changed current directory to <directory>
```
20

21 22
Then add `<directory>/vendor/bin` to you `PATH` environment variable. Now we're able to use `codecept` from command
line globally.
23

24 25 26 27 28 29
2. Install faker extension by running the following from template root directory where `composer.json` is:

```
composer require --dev yiisoft/yii2-faker:*
```

30
3. Create `yii2_basic_tests` database and update it by applying migrations:
31 32

```
33
codeception/bin/yii migrate
34 35 36
```

4. Build the test suites:
37 38 39 40 41

```
codecept build
```

42
5. In order to be able to run acceptance tests you need to start a webserver. The simplest way is to use PHP built in
43 44 45 46 47
webserver. In the `web` directory execute the following:

```
php -S localhost:8080
```
48

49
6. Now you can run the tests with the following commands:
50 51 52

```
# run all available tests
53
codecept run
54
# run acceptance tests
55
codecept run acceptance
56
# run functional tests
57
codecept run functional
58
# run unit tests
59
codecept run unit
60 61
```

62 63 64
Code coverage support
---------------------

Mark Ragazzo committed
65
By default, code coverage is disabled in `codeception.yml` configuration file, you should uncomment needed rows to be able
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
to collect code coverage. You can run your tests and collect coverage with the following command:

```
#collect coverage for all tests
codecept run --coverage-html --coverage-xml

#collect coverage only for unit tests
codecept run unit --coverage-html --coverage-xml

#collect coverage for unit and functional tests
codecept run functional,unit --coverage-html --coverage-xml
```

You can see code coverage output under the `tests/_output` directory.

###Remote code coverage

When you run your tests not in the same process where code coverage is collected, then you should uncomment `remote` option and its
related options, to be able to collect code coverage correctly. To setup remote code coverage you should follow [instructions](http://codeception.com/docs/11-Codecoverage)
from codeception site.

Mark Ragazzo committed
87
1. install `Codeception c3` remote support `composer require "codeception/c3:*"`;
88

Mark Ragazzo committed
89
2. copy `c3.php` file under your `web` directory;
90 91 92 93 94 95 96

3. include `c3.php` file in your `index-test.php` file before application run, so it can catch needed requests.

Configuration options that are used by remote code coverage:

- c3_url: url pointing to entry script that includes `c3.php` file, so `Codeception` will be able to produce code coverage;
- remote: whether to enable remote code coverage or not;
Mark Ragazzo committed
97
- remote_config: path to the `codeception.yml` configuration file, from the directory where `c3.php` file is located. This is needed
98 99 100 101 102 103 104 105 106 107 108 109
  so that `Codeception` can create itself instance and collect code coverage correctly.

By default `c3_url` and `remote_config` setup correctly, you only need to copy and include `c3.php` file in your `index-test.php`

After that you should be able to collect code coverage from tests that run through `PhpBrowser` or `WebDriver` with same command
as for other tests:

```
#collect coverage from remote
codecept run acceptance --coverage-html --coverage-xml
```

110
Please refer to [Codeception tutorial](http://codeception.com/docs/01-Introduction) for
111
more details about writing and running acceptance, functional and unit tests.