WordPress Plugin Tests
This repo contains unit testing skeleton files designed for use in WordPress plugins that utilize WordPress's own unit testing framework and PHPUnit. We've outlined two methods of unit testing your WordPress plugin. First within a local installation of WordPress, and a second method using Travis CI.
phpunit.xml.dist, and the
testsdirectory into the root folder of your plugin.
tests/bootstrap.phpand update the
active_pluginssetting to point to your main plugin file.
Running Unit Tests Locally
Clone a copy of WordPress from this GitHub mirror of the official develop.svn.wordpress.org repository:
git clone git://develop.git.wordpress.org/ wordpress
Copy your plugin (along with unit testing files) into the copy of WordPress that was included in the clone above under:
wp-tests-config-sample.phpfile in the root of the
wp-tests-config.php, and make the appropriate changes pointing it to a new, empty MySQL database it can use for testing. DO NOT USE A WORKING WORDPRESS DATABASE, IT WILL BE LOST!
phpunitfrom your plugin's root folder.
Writing Unit Tests
Create all new test cases under the
tests folder with filenames prefixed with
test_. In those files, create a new class (name does not matter at all, but
it's recommended to prefix class names with
WP_Test_) that extends
WP_UnitTestCase. All methods in this class prefixed with
test_ will be run
as unit tests. See the PHPUnit documentation
for available assertions and other API available for writing tests.
An example has been provided at
Configuring Travis CI
Using Travis CI to run your unit tests absolutely requires that your plugin is maintained on GitHub in a public repository. This will not work otherwise.
- Activate Travis CI for your plugin.
- The first test run needs to be triggered by a push to your plugin's GitHub repository after you have activated it in Travis CI.
Any git push to your plugin repository from here on out will automatically trigger new test runs on Travis CI.
You will likely want to customize
.travis.yml to suite your plugin's needs in
regards to compatible versions of PHP and WordPress.
Using Grunt? No problem.
Just add these commands to your
before_script step in
- npm install -g grunt-cli - npm install
If you use the same method that WordPress does for
adding a phpunit task
to your plugin, then you can just use
grunt test instead of
phpunit for your