BuddyPress contains a suite of automated tests. These tests are designed to prevent the accidental introduction – or reintroduction – of bugs. If you are a developer of BuddyPress plugins, or if you are contributing to BuddyPress core, please consider using (and writing!) these tests.
The BuddyPress test system is based on, and uses, the WordPress suite. Before getting started, you are encouraged to read more about how WordPress tests work.
- Set up the WordPress test suite. You’ll need to install PHPUnit, check out the WordPress core test repository, create a blank MySQL database, and set up your
wp-tests-config.phpfile. Follow the instructions in the WordPress contributor handbook to get set up. The WordPress test suite can be located anywhere on your development machine, though it’s recommended that you place it somewhere outside your normal WordPress/BuddyPress development environment.
- Check out the BuddyPress Subversion repository. At the moment, we do not plan to distribute the test suite with the .zip download of BuddyPress. To use the BuddyPress test suite, you’ll need to check out BuddyPress trunk from buddypress.trac.wordpress.org.
$ svn co https://buddypress.svn.wordpress.org/trunk buddypress
Please note that your checkout of BuddyPress trunk must be at or beyond revision 6908.
WP_TESTS_DIRin your bash profile (optional). The test suite requires an environment variable
WP_TESTS_DIRthat defines the location of your checkout of the WordPress tests. While it’s possible to define the environment variable each time you run the tests, ie,
WP_TESTS_DIR=~/sites/tests/phpunitand then export using
export WP_TESTS_DIR, you’ll probably find it useful to set the variable permanently in your bash profile. On OS X or Linux, add the following line to
(changing the path to wherever you installed the WP tests in step 1). To apply these changes,
Running the tests
Navigate to the
tests subdirectory of the BuddyPress plugin folder, and type
phpunit. (If you didn’t add
WP_TESTS_DIR to your bash profile in step 3 above, you’ll need to define that environment variable inline.) Then: