This guide demonstrates how to run integration tests on both Travis CI and locally. The scaffolding uses the WordPress CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. “unit tests” that serve to unit-test WordPress Core. Unit tests are useful for testing plugins and themes as well, but if they are used in that way, it turns those tests into “integration tests” – they test the integration between a pluginPluginA plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party/theme and WordPress Core. Proper unit tests for a plugin or theme would not load WordPress.
If you host your plugin on GitHubGitHubGitHub is a website that offers online implementation of git repositories that can can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ and enable Travis CI, the tests will be run automatically after every commit you make to the plugin.
All you need to do to enable this is copy and then edit the following files from the WP-CLI sample plugin:
.travis.yml, phpunit.xml.dist and phpcs.ruleset.xml files
The install script first installs a copy of WordPress in the /tmp directory (by default) as well as the WordPress unit testing tools. Then it creates a database to be used while running tests. The parameters that are passed to install-wp-tests.sh setup the test database.
wordpress_test is the name of the test database (all data will be deleted!)
root is the MySQLMySQLMySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com/. user name
'' is the MySQL user password
localhost is the MySQL server host
latest is the WordPress version; could also be 3.7, 3.6.2 etc.
NOTE: This script can be run multiple times without errors, but it will not overwrite previously existing files. So if your DB credentials change, or you want to switch to a different instance of mysql, simply re-running the script won’t be enough. You’ll need to manually edit the wp-config.php that’s installed in /tmp.
Second, the bin/install-wp-tests.sh script doesn’t work directly in Windows. Windows 10 introduced a Windows Subsystem for Linux but older versions require extra effort. Cygwin is preferred because it runs bash scripts by default.
Third, the bash installation script uses which, a Linux command not available by default in Windows. cURL, svn and wget all can be installed in Windows as separate packages.
Lastly, sometimes the bash script fails to build WordPress because of how it uses tmp folders. If it fails, then you can manually install WordPress to a writeable directory, and then manually create wp-tests-config.php.