Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: update tests/README.md #6274

Merged
merged 4 commits into from
Jul 20, 2022
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 49 additions & 30 deletions admin/module/tests/README.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,81 @@
# Running Module Tests

This is the quick-start to CodeIgniter testing. Its intent is to describe what
it takes to set up your module and get it ready to run unit tests.
It is not intended to be a full description of the test features that you can
This is the quick-start to CodeIgniter testing. Its intent is to describe what
it takes to set up your module and get it ready to run unit tests.
It is not intended to be a full description of the test features that you can
use to test your module. Those details can be found in the documentation.

## Resources

* [CodeIgniter 4 User Guide on Testing](https://codeigniter4.github.io/userguide/testing/index.html)
* [PHPUnit docs](https://phpunit.readthedocs.io/en/8.5/index.html)
* [PHPUnit docs](https://phpunit.de/documentation.html)
* [Any tutorials on Unit testing in CI4?](https://forum.codeigniter.com/showthread.php?tid=81830)

## Requirements

It is recommended to use the latest version of PHPUnit. At the time of this
writing we are running version 8.5.13. Support for this has been built into the
**composer.json** file that ships with CodeIgniter and can easily be installed
It is recommended to use the latest version of PHPUnit. At the time of this
writing we are running version 9.x. Support for this has been built into the
**composer.json** file that ships with CodeIgniter and can easily be installed
via [Composer](https://getcomposer.org/) if you don't already have it installed globally.

> composer install
```console
> composer install
```

If running under OS X or Linux, you can create a symbolic link to make running tests a touch nicer.
If running under macOS or Linux, you can create a symbolic link to make running tests a touch nicer.

> ln -s ./vendor/bin/phpunit ./phpunit
```console
> ln -s ./vendor/bin/phpunit ./phpunit
```

You also need to install [XDebug](https://xdebug.org/index.php) in order
for code coverage to be calculated successfully.
You also need to install [XDebug](https://xdebug.org/docs/install) in order
for code coverage to be calculated successfully. After installing `XDebug`, you must add `xdebug.mode=coverage` in the **php.ini** file to enable code coverage.
samsonasik marked this conversation as resolved.
Show resolved Hide resolved

## Setting Up

A number of the tests use a running database.
In order to set up the database edit the details for the `tests` group in
**phpunit.xml**. Make sure that you provide a database engine that is currently running
on your machine. More details on a test database setup are in the
*Docs>>Testing>>Testing Your Database* section of the documentation.
A number of the tests use a running database.
In order to set up the database edit the details for the `tests` group in
**phpunit.xml**.
Make sure that you provide a database engine that is currently running on your machine.
More details on a test database setup are in the
[Testing Your Database](https://codeigniter4.github.io/userguide/testing/database.html) section of the documentation.

## Running the tests

The entire test suite can be run by simply typing one command-line command from the main directory.

> ./phpunit
```console
> ./phpunit
MGatner marked this conversation as resolved.
Show resolved Hide resolved
```

If you are using Windows, use the following command.

```console
> vendor\bin\phpunit
```

You can limit tests to those within a single test directory by specifying the
directory name after phpunit.
You can limit tests to those within a single test directory by specifying the
directory name after phpunit.

> ./phpunit app/Models
```console
> ./phpunit app/Models
kenjis marked this conversation as resolved.
Show resolved Hide resolved
```

## Generating Code Coverage

To generate coverage information, including HTML reports you can view in your browser,
you can use the following command:
To generate coverage information, including HTML reports you can view in your browser,
you can use the following command:

> ./phpunit --colors --coverage-text=tests/coverage.txt --coverage-html=tests/coverage/ -d memory_limit=1024m
```console
> ./phpunit --colors --coverage-text=tests/coverage.txt --coverage-html=tests/coverage/ -d memory_limit=1024m
```

This runs all of the tests again collecting information about how many lines,
functions, and files are tested. It also reports the percentage of the code that is covered by tests.
It is collected in two formats: a simple text file that provides an overview as well
as a comprehensive collection of HTML files that show the status of every line of code in the project.
This runs all of the tests again collecting information about how many lines,
functions, and files are tested. It also reports the percentage of the code that is covered by tests.
It is collected in two formats: a simple text file that provides an overview as well
as a comprehensive collection of HTML files that show the status of every line of code in the project.

The text file can be found at **tests/coverage.txt**.
The text file can be found at **tests/coverage.txt**.
The HTML files can be viewed by opening **tests/coverage/index.html** in your favorite browser.

## PHPUnit XML Configuration
Expand All @@ -67,7 +86,7 @@ do not have your own configuration file in the project root.

The normal practice would be to copy ``phpunit.xml.dist`` to ``phpunit.xml``
(which is git ignored), and to tailor it as you see fit.
For instance, you might wish to exclude database tests, or automatically generate
For instance, you might wish to exclude database tests, or automatically generate
HTML code coverage reports.

## Test Cases
Expand Down
77 changes: 43 additions & 34 deletions admin/starter/tests/README.md
Original file line number Diff line number Diff line change
@@ -1,72 +1,81 @@
# Running Application Tests

This is the quick-start to CodeIgniter testing. Its intent is to describe what
it takes to set up your application and get it ready to run unit tests.
It is not intended to be a full description of the test features that you can
This is the quick-start to CodeIgniter testing. Its intent is to describe what
it takes to set up your application and get it ready to run unit tests.
It is not intended to be a full description of the test features that you can
use to test your application. Those details can be found in the documentation.

## Resources

* [CodeIgniter 4 User Guide on Testing](https://codeigniter4.github.io/userguide/testing/index.html)
* [PHPUnit docs](https://phpunit.de/documentation.html)
* [Any tutorials on Unit testing in CI4?](https://forum.codeigniter.com/showthread.php?tid=81830)

## Requirements

It is recommended to use the latest version of PHPUnit. At the time of this
writing we are running version 9.x. Support for this has been built into the
**composer.json** file that ships with CodeIgniter and can easily be installed
It is recommended to use the latest version of PHPUnit. At the time of this
writing we are running version 9.x. Support for this has been built into the
**composer.json** file that ships with CodeIgniter and can easily be installed
via [Composer](https://getcomposer.org/) if you don't already have it installed globally.

> composer install
```console
> composer install
```

If running under OS X or Linux, you can create a symbolic link to make running tests a touch nicer.
If running under macOS or Linux, you can create a symbolic link to make running tests a touch nicer.

> ln -s ./vendor/bin/phpunit ./phpunit
```console
> ln -s ./vendor/bin/phpunit ./phpunit
```

You also need to install [XDebug](https://xdebug.org/index.php) in order
for code coverage to be calculated successfully.
You also need to install [XDebug](https://xdebug.org/docs/install) in order
for code coverage to be calculated successfully. After installing `XDebug`, you must add `xdebug.mode=coverage` in the **php.ini** file to enable code coverage.

## Setting Up

A number of the tests use a running database.
In order to set up the database edit the details for the `tests` group in
**app/Config/Database.php** or **phpunit.xml**. Make sure that you provide a database engine
that is currently running on your machine. More details on a test database setup are in the
A number of the tests use a running database.
In order to set up the database edit the details for the `tests` group in
**app/Config/Database.php** or **phpunit.xml**.
Make sure that you provide a database engine that is currently running on your machine.
More details on a test database setup are in the
[Testing Your Database](https://codeigniter4.github.io/userguide/testing/database.html) section of the documentation.

If you want to run the tests without using live database you can
exclude @DatabaseLive group. Or make a copy of **phpunit.dist.xml** -
call it **phpunit.xml** - and comment out the <testsuite> named "database". This will make
the tests run quite a bit faster.

## Running the tests

The entire test suite can be run by simply typing one command-line command from the main directory.

> ./phpunit
```console
> ./phpunit
```

If you are using Windows, use the following command.

> vendor\bin\phpunit
```console
> vendor\bin\phpunit
```

You can limit tests to those within a single test directory by specifying the
directory name after phpunit.
You can limit tests to those within a single test directory by specifying the
directory name after phpunit.

> ./phpunit app/Models
```console
> ./phpunit app/Models
```

## Generating Code Coverage

To generate coverage information, including HTML reports you can view in your browser,
you can use the following command:
To generate coverage information, including HTML reports you can view in your browser,
you can use the following command:

> ./phpunit --colors --coverage-text=tests/coverage.txt --coverage-html=tests/coverage/ -d memory_limit=1024m
```console
> ./phpunit --colors --coverage-text=tests/coverage.txt --coverage-html=tests/coverage/ -d memory_limit=1024m
```

This runs all of the tests again collecting information about how many lines,
functions, and files are tested. It also reports the percentage of the code that is covered by tests.
It is collected in two formats: a simple text file that provides an overview as well
as a comprehensive collection of HTML files that show the status of every line of code in the project.
This runs all of the tests again collecting information about how many lines,
functions, and files are tested. It also reports the percentage of the code that is covered by tests.
It is collected in two formats: a simple text file that provides an overview as well
as a comprehensive collection of HTML files that show the status of every line of code in the project.

The text file can be found at **tests/coverage.txt**.
The text file can be found at **tests/coverage.txt**.
The HTML files can be viewed by opening **tests/coverage/index.html** in your favorite browser.

## PHPUnit XML Configuration
Expand All @@ -77,7 +86,7 @@ do not have your own configuration file in the project root.

The normal practice would be to copy ``phpunit.xml.dist`` to ``phpunit.xml``
(which is git ignored), and to tailor it as you see fit.
For instance, you might wish to exclude database tests, or automatically generate
For instance, you might wish to exclude database tests, or automatically generate
HTML code coverage reports.

## Test Cases
Expand Down
85 changes: 54 additions & 31 deletions tests/README.md
Original file line number Diff line number Diff line change
@@ -1,75 +1,98 @@
# Running System Tests

This is the quick-start to CodeIgniter testing. Its intent is to describe what
it takes to set up your system and get it ready to run unit tests.
It is not intended to be a full description of the test features that you can
use to test your application. Those details can be found in the documentation.
This is the quick-start to CodeIgniter testing. Its intent is to describe what
it takes to set up your system and get it ready to run unit tests.
It is not intended to be a full description of the test features that you can
use to test your application. Those details can be found in the documentation.

## Resources

* [CodeIgniter 4 User Guide on Testing](https://codeigniter4.github.io/userguide/testing/index.html)
* [PHPUnit docs](https://phpunit.de/documentation.html)
* [Any tutorials on Unit testing in CI4?](https://forum.codeigniter.com/showthread.php?tid=81830)

## Requirements

It is recommended to use the latest version of PHPUnit. At the time of this
writing we are running version 9.x. Support for this has been built into the
**composer.json** file that ships with CodeIgniter and can easily be installed
It is recommended to use the latest version of PHPUnit. At the time of this
writing we are running version 9.x. Support for this has been built into the
**composer.json** file that ships with CodeIgniter and can easily be installed
via [Composer](https://getcomposer.org/) if you don't already have it installed globally.

> composer install
```console
> composer install
```

If running under OS X or Linux, you can create a symbolic link to make running tests a touch nicer.
If running under macOS or Linux, you can create a symbolic link to make running tests a touch nicer.

> ln -s ./vendor/bin/phpunit ./phpunit
```console
> ln -s ./vendor/bin/phpunit ./phpunit
```

You also need to install [XDebug](https://xdebug.org/docs/install) in order
for code coverage to be calculated successfully. After installing `XDebug`, you must add `xdebug.mode=coverage` in the **php.ini** file to enable code coverage.

## Setting Up

A number of the tests use a running database.
In order to set up the database edit the details for the `tests` group in
**app/Config/Database.php** or **phpunit.xml**. Make sure that you provide a database engine
that is currently running on your machine. More details on a test database setup are in the
A number of the tests use a running database.
In order to set up the database edit the details for the `tests` group in
**app/Config/Database.php** or **phpunit.xml**.
Make sure that you provide a database engine that is currently running on your machine.
More details on a test database setup are in the
[Testing Your Database](https://codeigniter4.github.io/CodeIgniter4/testing/database.html) section of the documentation.

If you want to run the tests without using live database you can
exclude `@DatabaseLive` group. Or make a copy of **phpunit.dist.xml** -
If you want to run the tests without using live database you can
exclude `@DatabaseLive` group. Or make a copy of **phpunit.dist.xml** -
call it **phpunit.xml** - and comment out the `<testsuite>` named `Database`. This will make
the tests run quite a bit faster.

## Running the tests

The entire test suite can be run by simply typing one command-line command from the main directory.

> ./phpunit
```console
> ./phpunit
```

If you are using Windows, use the following command.

> vendor\bin\phpunit
```console
> vendor\bin\phpunit
```

You can limit tests to those within a single test directory by specifying the
You can limit tests to those within a single test directory by specifying the
directory name after phpunit. All core tests are stored under **tests/system**.

> ./phpunit tests/system/HTTP/
```console
> ./phpunit tests/system/HTTP/
```

Individual tests can be run by including the relative path to the test file.

> ./phpunit tests/system/HTTP/RequestTest.php
```console
> ./phpunit tests/system/HTTP/RequestTest.php
```

You can run the tests without running the live database and the live cache tests.

> ./phpunit --exclude-group DatabaseLive,CacheLive
```console
> ./phpunit --exclude-group DatabaseLive,CacheLive
```

## Generating Code Coverage

To generate coverage information, including HTML reports you can view in your browser,
you can use the following command:
To generate coverage information, including HTML reports you can view in your browser,
you can use the following command:

> ./phpunit --colors --coverage-text=tests/coverage.txt --coverage-html=tests/coverage/ -d memory_limit=1024m
```console
> ./phpunit --colors --coverage-text=tests/coverage.txt --coverage-html=tests/coverage/ -d memory_limit=1024m
```

This runs all of the tests again collecting information about how many lines,
functions, and files are tested. It also reports the percentage of the code that is covered by tests.
It is collected in two formats: a simple text file that provides an overview as well
as a comprehensive collection of HTML files that show the status of every line of code in the project.
This runs all of the tests again collecting information about how many lines,
functions, and files are tested. It also reports the percentage of the code that is covered by tests.
It is collected in two formats: a simple text file that provides an overview as well
as a comprehensive collection of HTML files that show the status of every line of code in the project.

The text file can be found at **tests/coverage.txt**.
The text file can be found at **tests/coverage.txt**.
The HTML files can be viewed by opening **tests/coverage/index.html** in your favorite browser.

## PHPUnit XML Configuration
Expand All @@ -80,5 +103,5 @@ do not have your own configuration file in the project root.

The normal practice would be to copy ``phpunit.xml.dist`` to ``phpunit.xml``
(which is git ignored), and to tailor it as you see fit.
For instance, you might wish to exclude database tests, or automatically generate
For instance, you might wish to exclude database tests, or automatically generate
HTML code coverage reports.