&160; &160;phpunit-logo selenium-logo xampp.logo

A small how to install PHPUnit via PEAR in an XAMPP running on a windows box. A prerequisite for a continuous build strategy.

PHPUnit is a member of the xUnit family of testing frameworks and provides both a framework that makes the writing of tests easy as well as the functionality to easily run the tests and analyze their results.

Installing XAMPP

  • Download XAMPP from http://www.apachefriends.org/en/xampp.html
  • Unpack the zip, don't run any installer, just use the \xampp\xampp-control.exe to control the component (so the whole XAMPP directory can be moved to another drive without having absolute paths in all configurations files)

Installing PEAR

  • Execute&160; \xampp\php\go-pear.bat and follow the onscreen instructions. The installation will modify the include_path in your php.ini file.
  • Execute \xampp\php\PEAR_ENV.reg to add PEAR to the windows registry

Installing PHPUnit

  • Open a command prompt
  • Execute&160; pear channel-discover pear.phpunit.de
  • Execute&160; pear install phpunit/PHPUnit
  • Now you should find PHPUnit installed in \xampp\php\PEAR\PHPUnit\

Installing Selenium

  • Execute&160; pear install Testing_Selenium

Some useful pear commands to keep your PHP up to date

  • \xampp\php\pear list-upgrades
  • \xampp\php\pear upgrade-all

All pear Commands

build&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Build an Extension From C Source
bundle&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Unpacks a Pecl Package
channel-add&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Add a Channel
channel-alias&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Specify an alias to a channel name
channel-delete&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Remove a Channel From the List
channel-discover&160;&160;&160;&160;&160;&160;&160;&160; Initialize a Channel from its server
channel-info&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Retrieve Information on a Channel
channel-update&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Update an Existing Channel
clear-cache&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Clear Web Services Cache
config-create&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Create a Default configuration file
config-get&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Show One Setting
config-help&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Show Information About Setting
config-set&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Change Setting
config-show&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Show All Settings
convert&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Convert a package.xml 1.0 to package.xml 2.0 format
cvsdiff&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Run a "cvs diff" for all files in a package
cvstag&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Set CVS Release Tag
download&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Download Package
download-all&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Downloads each available package from the default channel
info&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Display information about a package
install&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Install Package
list&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; List Installed Packages In The Default Channel
list-all&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; List All Packages
list-categories&160;&160;&160;&160;&160;&160;&160;&160;&160; List All Categories
list-category&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; List All Packages of a Category
list-channels&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; List Available Channels
list-files&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; List Files In Installed Package
list-packages&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; List All Packages of a Channel
list-upgrades&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; List Available Upgrades
login&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Connects and authenticates to remote server
logout&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Logs out from the remote server
makerpm&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Builds an RPM spec file from a PEAR package
package&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Build Package
package-dependencies&160;&160;&160;&160; Show package dependencies
package-validate&160;&160;&160;&160;&160;&160;&160;&160; Validate Package Consistency
pickle&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Build PECL Package
remote-info&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Information About Remote Packages
remote-list&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; List Remote Packages
run-scripts&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Run Post-Install Scripts bundled with a package
run-tests&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Run Regression Tests
search&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Search remote package database
shell-test&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Shell Script Test
sign&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Sign a package distribution file
uninstall&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Un-install Package
update-channels&160;&160;&160;&160;&160;&160;&160;&160;&160; Update the Channel List
upgrade&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Upgrade Package
upgrade-all&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Upgrade All Packages
Usage: pear [options] command [command-options] <parameters>
Type "pear help options" to list all options.
Type "pear help shortcuts" to list all command shortcuts.
Type "pear help <command>" to get the help for the specified command.

Pear References

PEAR: Getting the manager
PEAR: Checking if PEAR works

comments powered by Disqus

You might like also

Failed opening required PHPUnit/TextUI/TestRunner.php in Maven For PHP
This issue has turn me upside down a long time. In fact in the official Google Group http://groups.google.de/group/maven-for-php/ I was not the only one to have this issue. I did try the following, and it is always good to check first Checking PHP version, Starting Maven with -X for having more debug information Testing it in Eclipse + M2Eclipse on windows, was working there, Comparing calculated PHP include path on Windows and Linux: they were identical in this case Only …
3453 Days ago
Installing Subversion on OpenSuse and Plesk 9
Subversion (SVN) is an open source version control system. It allows users to keep track of changes made over time to any type of electronic data. Typical uses are versioning source code, web pages or design documents. I now host my own private subversion at http://svn.waltercedric.com A required step to be able to build some small project and finish the prototype of Continuous build for Joomla!   …
3730 Days ago
When Joomla! meet Maven for PHP
I will quickly describe in this post how you can code your component/plugins/modules against a specific version of Joomla! with no effort using Maven for PHP. The trick I made is to package the whole Joomla distribution in a jar file, and add a Maven dependency to the project. As Joomla, PHPUnit, or any other 3rd party is not a set of class packaged in a jar, the brilliant idea of Maven for PHP is to unpack all these dependencies …
3744 Days ago
My 2 first Joomla! component in continuous build
Status/Done Build with Maven For PHP in TeamCity SVN repository at http://joomlacode.org/svn/com_securityi1/trunk/ and http://joomlacode.org/svn/com_akobookplus/trunk/ Totally independent of continuous build server (Thanks to MAVEN), so Hudson, Bamboo and Cruise Control are SUPPORTED. …
3745 Days ago
Configuring TeamCity, Maven for PHP for Joomla continuous build
Maven for PHP uses the power of Maven for building, reporting on and creating documentations of PHP projects. It adapts the Maven build lifecycle to the PHP world while fully supporting PHP 4 and PHP 5. PHP for Maven uses PHPUnit for unit testing and doxygen for creating the api documentation. Use a PHP library project to create a library that can be used by other PHP libraries or PHP web projects. Use a PHP web project to create a …
3746 Days ago
No Thumbnail was found
I put some effort the last few days in this new framework. Done: I did document some part of it at http://wiki.waltercedric.com/index.php?title=ContinuousBuildforJoomla TeamCity is installed/configured/documented (windows only) XAMPP is installed/configured/documented (windows only) I also at the same time configured a Puppy Linux VMWare image that will permit to anybody to have a running environment in no time. I am able to unpack all Joomla! versions that are committed in any repository (CVS, SVN, Clearcase) They can be unpacked anywhere on …
3832 Days ago
ContinuousBuild4Joomla project submitted to JoomlaCode.org
I will commit soon a first draft (alpha) of what is expected to bring continuous build to any Joomla! component (or event to Joomla! core itself ;-)) You are free to join the project, all documentation effort stay at the moment in my WIKI &160; …
3879 Days ago
No Thumbnail was found
Automatic installation of Joomla! runtime environments Main ideas Build is scalable Distributed build management optimize hardware resources utilization by parallelizing product builds within the build agents grid. With build chains support, it is even possible to break down a single build procedure into several parts to run them on different build agents &8212; both in sequence and in parallel &8212; using the same set of sources in all of them. I want to be able to test my components against …
3884 Days ago