Here we'll cover how to install PHPunit and integrate it into NetBeans
First, as always install some application we'll need in the future
$ sudo apt-get install php5-dev php-pear
If you installed xdebug from ubuntu repositories you'll need to remove it
$ sudo apt-get remove php5-xdebug
Now discover phpunit servers
$ sudo pear channel-discover pear.phpunit.de
$ sudo pear channel-discover pear.symfony-project.com
And install it
$ sudo pear install --alldeps phpunit/PHPUnit
I strongly recommend installing xdebug
$ sudo pecl install xdebug
Now that you have phpUnit installed just need to add some generic tests to your project, what I've used is
1. Create a tests directory on the project root
$ mkdir tests
2. Create a php file that will recursively load all the files in the directory and run a class of phpUnit to run all the classes loaded, some proposed content is displayed here.
$ kate allTests.php
//add the phpunit framework
require_once 'PHPUnit/Framework.php';
//including all the files available in the current directory
$filesIncluded = array();
includeRecurse('tests', $filesIncluded);
//generic class
class phpucAllTests
{
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Package');
foreach ($GLOBALS['filesIncluded'] as $fileincluded)
{
$filename = explode('.', $fileincluded);
$suite->addTestSuite($filename[0]);
}
return $suite;
}
}
require_once 'PHPUnit/Framework.php';
//including all the files available in the current directory
$filesIncluded = array();
includeRecurse('tests', $filesIncluded);
//generic class
class phpucAllTests
{
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Package');
foreach ($GLOBALS['filesIncluded'] as $fileincluded)
{
$filename = explode('.', $fileincluded);
$suite->addTestSuite($filename[0]);
}
return $suite;
}
}
3. Any file inside the tests directory should be something like:
class InstallJobTest extends PHPUnit_Framework_TestCase
{
public function testAapplyFilters()
{
//test the null query
$query = null;
InstallJob::applyFilters($query);
$sql = $query->getSQL();
$this->assertRegExp('/^SELECT (.*) FROM InstallJob/', $sql);
//Testing club number filter
$this->clubNumberFilterTests();
//Testing installation companies
$this->installationCompanyFilterTests();
}
}
{
public function testAapplyFilters()
{
//test the null query
$query = null;
InstallJob::applyFilters($query);
$sql = $query->getSQL();
$this->assertRegExp('/^SELECT (.*) FROM InstallJob/', $sql);
//Testing club number filter
$this->clubNumberFilterTests();
//Testing installation companies
$this->installationCompanyFilterTests();
}
}
Now that all the required files are created, it's time to test the phpUnit
Open a console and into your project directory run
$ phpunit tests/allTests.php
If all is working is time to use NetBeans
Select the project in the "Projects" panel and right click it, select "test" from the context menu.

A dialog will open prompting for a unit test folder, select the tests directory you created
Now below "Source Files" a new item called "Test Files" appear with the contents of the tests directory
To run the tests right click allTests.php file and select "run" from the context menu

NetBeans will display some useful information such as the code coverage, executed test cases, asserts, etc.
No comments:
Post a Comment