KEMBAR78
PHPUnit Automated Unit Testing Framework | PPT
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org PHPUnit Automated Unit Testing Framework June 5, 2008
Dave Ross “ I grew up around computers, fell in love with the Internet way back in 1994, and built a successful career around my interests in computers and business. My career focus has been on e-commerce, and in my personal time I study issues related to digital identity, trust, and reputation tracking. I’m also an small business owner, an avid Scrabble player, and a b-movie junkie.” 9 years professional development experience PHP developer, certified Java developer LinkedIn profile: http://www.linkedin.com/pub/2/832/9b0 Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
The West Suburban Chicago PHP Meetup Meets first Thursday of every month Usually at the Panera in Wheaton Official Meetup page: http://php.meetup.com/381 Blog: http://suburbanchicagophp.org Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
PHPUnit  is a member of the xUnit family of testing frameworks (SUnit, jUnit, pyUnit...)  Written for PHP 5.x, older versions supported PHP 4.x Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
Unit testing: Testing the  smallest  testable parts of an application (Functions, Classes, Macros) Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
The xUnit frameworks provide a way to  automate  unit tests If you automate your tests, the quality of your tests is consistent Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org Make it  easy  to test, and you'll do it more often. If you use version control, test before every check-in
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org You can wrap a set of tests into a  test suite A suite tests larger units of your application, even the application itself
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org PHP itself is tested using automated tests They use a framework called  phpt
The PHPUnit Pocket Guide Tells you everything you need to know when writing PHPUnit test cases Buy the book, or read the HTML version at: http://www.phpunit.de/pocket_guide/index.en.php Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org Let's look at a test case!
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org <?php require_once 'PHPUnit/Framework.php'; class ArrayTest extends PHPUnit_Framework_TestCase { protected $fixture; protected function setUp() { // Create the Array fixture. $this->fixture = array(); } public function testNewArrayIsEmpty() { // Assert that the size of the Array fixture is 0. $this->assertEquals(0, sizeof($this->fixture)); } public function testArrayContainsAnElement() { // Add an element to the Array fixture. $this->fixture[] = 'Element'; // Assert that the size of the Array fixture is 1. $this->assertEquals(1, sizeof($this->fixture)); } } ?>
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org Tests should be run against a known, fixed state called a  fixture setUp() creates this state tearDown() destroys the state and puts things back the way they were
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org Test cases are implemented as functions whose names start with the word “ test ” This example has: testNewArrayIsEmpty() testArrayContainsAnElement()
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org Run  a PHPUnit test case with the  phpunit  command phpunit UnitTest UnitTest.php tells PHPUnit to look for a class UnitTest in the UnitTest.php file (filename is optional)
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org phpunit ArrayTest PHPUnit 3.3.0 by Sebastian Bergmann. .. Time: 0 seconds OK (2 tests)
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org Can output test logs to a variety of  formats : GraphViz JSON TAP XML
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org Test suite + Exported results allows for Continuous Integration
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org Continuous integration is a way to automatically run your test suite regularly Once a day... Once an hour... Every time someone checks in code...
Official PHPUnit page: http://www.phpunit.de/ PHPUnit Pocket Guide: http://www.phpunit.de/pocket_guide Effective Unit Testing: http://www.acm.org/ubiquity/views/t_burns_1.html For More Information Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org

PHPUnit Automated Unit Testing Framework

  • 1.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org PHPUnit Automated Unit Testing Framework June 5, 2008
  • 2.
    Dave Ross “I grew up around computers, fell in love with the Internet way back in 1994, and built a successful career around my interests in computers and business. My career focus has been on e-commerce, and in my personal time I study issues related to digital identity, trust, and reputation tracking. I’m also an small business owner, an avid Scrabble player, and a b-movie junkie.” 9 years professional development experience PHP developer, certified Java developer LinkedIn profile: http://www.linkedin.com/pub/2/832/9b0 Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
  • 3.
    The West SuburbanChicago PHP Meetup Meets first Thursday of every month Usually at the Panera in Wheaton Official Meetup page: http://php.meetup.com/381 Blog: http://suburbanchicagophp.org Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
  • 4.
    PHPUnit isa member of the xUnit family of testing frameworks (SUnit, jUnit, pyUnit...) Written for PHP 5.x, older versions supported PHP 4.x Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
  • 5.
    Unit testing: Testingthe smallest testable parts of an application (Functions, Classes, Macros) Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
  • 6.
    The xUnit frameworksprovide a way to automate unit tests If you automate your tests, the quality of your tests is consistent Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
  • 7.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org Make it easy to test, and you'll do it more often. If you use version control, test before every check-in
  • 8.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org You can wrap a set of tests into a test suite A suite tests larger units of your application, even the application itself
  • 9.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org PHP itself is tested using automated tests They use a framework called phpt
  • 10.
    The PHPUnit PocketGuide Tells you everything you need to know when writing PHPUnit test cases Buy the book, or read the HTML version at: http://www.phpunit.de/pocket_guide/index.en.php Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
  • 11.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org Let's look at a test case!
  • 12.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org <?php require_once 'PHPUnit/Framework.php'; class ArrayTest extends PHPUnit_Framework_TestCase { protected $fixture; protected function setUp() { // Create the Array fixture. $this->fixture = array(); } public function testNewArrayIsEmpty() { // Assert that the size of the Array fixture is 0. $this->assertEquals(0, sizeof($this->fixture)); } public function testArrayContainsAnElement() { // Add an element to the Array fixture. $this->fixture[] = 'Element'; // Assert that the size of the Array fixture is 1. $this->assertEquals(1, sizeof($this->fixture)); } } ?>
  • 13.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org Tests should be run against a known, fixed state called a fixture setUp() creates this state tearDown() destroys the state and puts things back the way they were
  • 14.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org Test cases are implemented as functions whose names start with the word “ test ” This example has: testNewArrayIsEmpty() testArrayContainsAnElement()
  • 15.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org Run a PHPUnit test case with the phpunit command phpunit UnitTest UnitTest.php tells PHPUnit to look for a class UnitTest in the UnitTest.php file (filename is optional)
  • 16.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org phpunit ArrayTest PHPUnit 3.3.0 by Sebastian Bergmann. .. Time: 0 seconds OK (2 tests)
  • 17.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org Can output test logs to a variety of formats : GraphViz JSON TAP XML
  • 18.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org Test suite + Exported results allows for Continuous Integration
  • 19.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org Continuous integration is a way to automatically run your test suite regularly Once a day... Once an hour... Every time someone checks in code...
  • 20.
    Official PHPUnit page:http://www.phpunit.de/ PHPUnit Pocket Guide: http://www.phpunit.de/pocket_guide Effective Unit Testing: http://www.acm.org/ubiquity/views/t_burns_1.html For More Information Dave Ross | West Suburban Chicago PHP Meetup | suburbanchicagophp.org
  • 21.
    Dave Ross |West Suburban Chicago PHP Meetup | suburbanchicagophp.org