The following will help get you up and running PHPUnit tests for the utm.codes plugin.
.
├── bin
└── tests
- bin - WordPress test suite install script
- tests - PHPUnit tests for our plugin
PHPUnit tests support
- PHPUnit 5 (for PHP 5.6)
- PHPUnit 6 (for PHP 7.0, 7.1, 7.2)
- PHPUnit 7 (for PHP 7.3, 7.4)
- PHPUnit 9 (for PHP 8.0, 8.1)
PHP Code Sniffer v3.6+, and WordPress coding standards v2.3 are recommended.
If you have composer installed running $ composer install
from the project root will set you up with the packages you need.
To get started with composer click here for installation details.
The install script contained in bin
will checkout the latest test suite from WordPress and configure your test database.
Note: The install script is included here for convenience but can also be generated by WP-CLI.
Alternatively you can checkout the test suite from WordPress svn and setup your database manually in the usual manner.
Update the config.inc.php
file to your needs:
- WP_TEST_DIR - Path to the WordPress tests directory you setup in Step 1
- UTMDC_PLUGIN_DIR - Path to the utm.codes plugin you're testing
- UTMDC_BITLY_API - A valid Bitly API Generic Access Token
- UTMDC_REBRANDLY]_API - A valid Rebrandly API Token
Note: Rename to
config.inc.local.php
(ignored in .gitignore) for environment personalization.
From the _test
directory execute $ ../vendor/bin/phpunit
to run the tests. This should result in output similar to:
Installing...
Running as single site... To run multisite, use -c tests/phpunit/multisite.xml
Not running ajax tests. To execute these, use --group ajax.
Not running ms-files tests. To execute these, use --group ms-files.
Not running external-http tests. To execute these, use --group external-http.
PHPUnit 7.5.20 by Sebastian Bergmann and contributors.
................................................................. 65 / 66 ( 98%)
. 66 / 66 (100%)
Time: 16.71 seconds, Memory: 48.00 MB
OK (66 tests, 596 assertions)
Generating code coverage report in Clover XML format ... done
Occasionally a newly installed test suite can throw the error:
1) TestUtmDotCodesUnit::test_is_test
UnexpectedValueException: RecursiveDirectoryIterator::__construct(/tmp/wordpress//wp-content/uploads):
failed to open dir: No such file or directory
This occurs because WordPress creates the uploads directory at runtime the first time you run the tests. If the directory doesn't exist and you don't have permission to create it there will be an error.
This can be resolved my running $ sudo phpunit
or by manually creating the directory within the test suite source.
Subsequent runs against the same test suite should not require sudo.
From the project root running the following command will test the project PHP files against the WordPress coding standard.
./vendor/bin/phpcs --standard=WordPress --report=summary ./index.php ./utm-dot-codes.php ./classes
From the project root running the following command will test utm.codes for compatibility with PHP 5.6+
./vendor/bin/phpcs --standard=PHPCompatibility -p --runtime-set testVersion 5.6- --report=summary ./index.php ./utm-dot-codes.php ./classes
All of these tests are run from our GitHub repo where you can browse the test history and results.
An even older history is available at Travis CI.