]> git.immae.eu Git - github/shaarli/Shaarli.git/blame - doc/Unit-tests.md
Bump version to v0.9.0
[github/shaarli/Shaarli.git] / doc / Unit-tests.md
CommitLineData
992af0b9 1#Unit tests
da9b0e3e 2
3### Setup your environment for tests
992af0b9 4The framework used is [PHPUnit](https://phpunit.de/); it can be installed with [Composer](https://getcomposer.org/), which is a dependency management tool.[](.html)
da9b0e3e 5
6Regarding Composer, you can either use:
7* a system-wide version, e.g. installed through your distro's package manager
992af0b9 8* a local version, downloadable [here](https://getcomposer.org/download/)[](.html)
da9b0e3e 9
10#### Sample usage
11```bash
12# system-wide version
13$ composer install
14$ composer update
15
16# local version
17$ php composer.phar self-update
18$ php composer.phar install
19$ php composer.phar update
20```
21
22#### Install Shaarli dev dependencies
23```bash
24$ cd /path/to/shaarli
25$ composer update
26```
27
28#### Install and enable Xdebug to generate PHPUnit coverage reports
29For Debian-based distros:
30```bash
31$ aptitude install php5-xdebug
32```
33For ArchLinux:
34```bash
35$ pacman -S xdebug
36```
37
38Then add the following line to `/etc/php/php.ini`:
39```ini
40zend_extension=xdebug.so
41```
42
43#### Run unit tests
44Successful test suite:
45```bash
46$ make test
47
48-------
49PHPUNIT
50-------
51PHPUnit 4.6.9 by Sebastian Bergmann and contributors.
52
53Configuration read from /home/virtualtam/public_html/shaarli/phpunit.xml
54
55....................................
56
57Time: 759 ms, Memory: 8.25Mb
58
59OK (36 tests, 65 assertions)
60```
61
62Test suite with failures and errors:
63```bash
64$ make test
65-------
66PHPUNIT
67-------
68PHPUnit 4.6.9 by Sebastian Bergmann and contributors.
69
70Configuration read from /home/virtualtam/public_html/shaarli/phpunit.xml
71
72E..FF...............................
73
74Time: 802 ms, Memory: 8.25Mb
75
76There was 1 error:
77
781) LinkDBTest::testConstructLoggedIn
79Missing argument 2 for LinkDB::__construct(), called in /home/virtualtam/public_html/shaarli/tests/Link\
80DBTest.php on line 79 and defined
81
82/home/virtualtam/public_html/shaarli/application/LinkDB.php:58
83/home/virtualtam/public_html/shaarli/tests/LinkDBTest.php:79
84
85--
86
87There were 2 failures:
88
891) LinkDBTest::testCheckDBNew
90Failed asserting that two strings are equal.
91--- Expected
92+++ Actual
93@@ @@
94-'e3edea8ea7bb50be4bcb404df53fbb4546a7156e'
95+'85eab0c610d4f68025f6ed6e6b6b5fabd4b55834'
96
97/home/virtualtam/public_html/shaarli/tests/LinkDBTest.php:121
98
992) LinkDBTest::testCheckDBLoad
100Failed asserting that two strings are equal.
101--- Expected
102+++ Actual
103@@ @@
104-'e3edea8ea7bb50be4bcb404df53fbb4546a7156e'
105+'85eab0c610d4f68025f6ed6e6b6b5fabd4b55834'
106
107/home/virtualtam/public_html/shaarli/tests/LinkDBTest.php:133
108
109FAILURES!
110Tests: 36, Assertions: 63, Errors: 1, Failures: 2.
111```
112
113#### Test results and coverage
114By default, PHPUnit will run all suitable tests found under the `tests` directory.
115
116Each test has 3 possible outcomes:
117* `.` - success
118* `F` - failure: the test was run but its results are invalid
119 * the code does not behave as expected
120 * dependencies to external elements: globals, session, cache...
121* `E` - error: something went wrong and the tested code has crashed
122 * typos in the code, or in the test code
123 * dependencies to missing external elements
124
125If Xdebug has been installed and activated, two coverage reports will be generated:
126* a summary in the console
127* a detailed HTML report with metrics for tested code
992af0b9 128 * to open it in a web browser: `firefox coverage/index.html &`
b230bf20
A
129
130### Executing specific tests
131Add a [`@group`](https://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.group) annotation in a test class or method comment:[](.html)
132
133```php
134/**
135 * Netscape bookmark import
136 * @group WIP
137 */
138class BookmarkImportTest extends PHPUnit_Framework_TestCase
139{
140 [...][](.html)
141}
142```
143
144To run all tests annotated with `@group WIP`:
145```bash
146$ vendor/bin/phpunit --group WIP tests/
147```