Introduction to PHPUnit and Selenium - AAPUG

5048618030da9845ed2710e0dc4da654?s=47 Jacob Mather
December 02, 2012

Introduction to PHPUnit and Selenium - AAPUG

This talk gives a basic overview of the different types of tests and tools out there, and then goes into specific detail of writing your first Selenium test in PHPUnit.

For more information, go to: http://jmather.com/talks/2012-12-01/

5048618030da9845ed2710e0dc4da654?s=128

Jacob Mather

December 02, 2012
Tweet

Transcript

  1. 1.

    Intro  to  PHP  Integra,on  Tes,ng   A  rapid  guide  to

     ge4ng  started  with   Selenium  and  PHPUnit   Jacob  Mather   @thejmather  
  2. 2.

    Why  We  Don’t  Test   Even  though  we  know  we

     should…   Jacob  Mather   @thejmather  
  3. 3.

    Why  We  Don’t  Test   •  We  don’t  know  about

     the  tools   •  We  don’t  understand  the  philosophy   •  We  don’t  think  we  have  the  ,me     Jacob  Mather   @thejmather  
  4. 4.

    Why  We  Don’t  Test   •  We  don’t  know  about

     the  tools   •  We  don’t  understand  the  philosophy   •  We  don’t  think  we  have  the  ,me     Jacob  Mather   @thejmather  
  5. 5.

    Why  We  Don’t  Test   •  We  don’t  know  about

     the  tools   •  We  don’t  understand  the  philosophy   •  We  don’t  think  we  have  the  ,me     Jacob  Mather   @thejmather  
  6. 6.

    Why  We  Don’t  Test   •  We  don’t  know  about

     the  tools   •  We  don’t  understand  the  philosophy   •  We  don’t  think  we  have  the  ,me     Jacob  Mather   @thejmather  
  7. 9.

    Picking  A  Test  Type     Unit  Tests   Integra,on

     Tests   Jacob  Mather   @thejmather  
  8. 10.

    Picking  A  Test  Type     Unit  Tests   Integra,on

     Tests   Jacob  Mather   @thejmather  
  9. 11.

    Picking  A  Test  Type     Unit  Tests   Integra,on

     Tests   Jacob  Mather   @thejmather  
  10. 12.

    Picking  A  Test  Tool     phpspec2   Behat  

    PHPUnit   Jacob  Mather   @thejmather  
  11. 13.

    Picking  A  Test  Tool     phpspec2   Behat  

    PHPUnit   Jacob  Mather   @thejmather  
  12. 14.

    Picking  A  Test  Tool     phpspec2   Behat  

    PHPUnit   Jacob  Mather   @thejmather  
  13. 15.

    Picking  A  Test  Tool     phpspec2   Behat  

    PHPUnit   Jacob  Mather   @thejmather  
  14. 16.

    Test  Types  &  Tools   Unit  Tests   Func,onal  Tests

      phpspec2   X   X   Behat   X   X   PHPUnit   X   X   Jacob  Mather   @thejmather  
  15. 19.

    Installing  PHPUnit   File:  composer.json   {    “require-­‐dev”:  {

         “phpunit/phpunit”:  “3.7.*”    },    “config”:  {      “bin-­‐dir”:  “bin”    }   }   Jacob  Mather   @thejmather  
  16. 20.

    Installing  PHPUnit  +  Selenium  Tools   File:  composer.json   {

       “require-­‐dev”:  {      “phpunit/phpunit-­‐selenium”:  “*”    },    “config”:  {      “bin-­‐dir”:  “bin”    }   }   Jacob  Mather   @thejmather  
  17. 23.

    Configuring  PHPUnit   File:  phpunit.xml.dist   <phpunit      colors="true"

         bootstrap="vendor/autoload.php">        <testsuites>          <testsuite  name="Unit  Tests">              <directory  suffix="Test.php">tests/</directory>          </testsuite>      </testsuites>   </phpunit>   Jacob  Mather   @thejmather  
  18. 25.

    Our  First  Test   File:  tests/ExampleTest.php   <?php    

    class  ExampleTest  extends  PHPUnit_Extensions_Selenium2TestCase   {   }       Jacob  Mather   @thejmather  
  19. 26.

    Our  First  Test   File:  tests/ExampleTest.php   <?php    

    class  ExampleTest  extends  PHPUnit_Extensions_Selenium2TestCase   {          public  func,on  setUp()          {                  $this-­‐>setBrowser('*firefox');                  $this-­‐>setBrowserUrl('h_p://jmather.com/');          }   }       Jacob  Mather   @thejmather  
  20. 27.

    Our  First  Test   File:  tests/ExampleTest.php   <?php    

    class  ExampleTest  extends  PHPUnit_Extensions_Selenium2TestCase   {          public  func,on  setUp()  {  /*  …  */  }            public  func,on  testTitle()          {                  $this-­‐>url('/');    $,tle  =  “It’s  Majax”;                  $this-­‐>assertEquals($,tle,  $this-­‐>,tle());          }   }       Jacob  Mather   @thejmather  
  21. 28.

    Our  First  Test   File:  tests/ExampleTest.php   <?php    

    class  ExampleTest  extends  PHPUnit_Extensions_Selenium2TestCase   {          public  func,on  setUp()  {  /*  …  */  }          public  func,on  testTitle()  {  /*  …  */  }            public  func,on  testSomeNaviga,on()          {                  $this-­‐>url('/');                  $this-­‐>byXPath('//div[@class=”widget_categories"]/a[text()  =  ”PHP"]')-­‐>click();                  $,tle  =  “PHP|  It’s  Majax”;                  $this-­‐>assertEquals($,tle,  $this-­‐>,tle());          }   }       Jacob  Mather   @thejmather  
  22. 29.

    Our  First  Test   File:  tests/ExampleTest.php   <?php    

    class  ExampleTest  extends  PHPUnit_Extensions_Selenium2TestCase   {          public  $browser  =  '*firefox';            public  func,on  setUp()          {                  $this-­‐>setBrowser($this-­‐>browser);                  $this-­‐>setBrowserUrl('h_p://jmather.com/');          }            public  func,on  testTitle()  {  /*  …  */  }          public  func,on  testSomeNaviga,on()  {  /*  …  */  }   }    
  23. 30.

    File:  tests/ExampleTest.php   <?php     class  ExampleTest  extends  PHPUnit_Extensions_Selenium2TestCase

      {          public  $browser  =  '*firefox';            public  func,on  setUp()          {                  $this-­‐>setBrowser($this-­‐>browser);                  $this-­‐>setBrowserUrl('h_p://jmather.com/');          }            public  func,on  testTitle()          {                  $this-­‐>url('/');                  $,tle  =  “PHP|  It’s  Majax”;                  $this-­‐>assertEquals($,tle,  $this-­‐>,tle());          }            public  func,on  testSomeNaviga,on()          {                  $this-­‐>url('/');                  $this-­‐>byXPath('//div[@class=”widget_categories"]/a[text()  =  ”PHP"]')-­‐>click();                  $,tle  =  “PHP|  It’s  Majax”;                  $this-­‐>assertEquals($,tle,  $this-­‐>,tle());          }   }   Jacob  Mather   @thejmather  
  24. 31.
  25. 32.

    Our  Second  Test   File:  tests/ChromeExampleTest.php   <?php    

    class  ChromeExampleTest  extends  ExampleTest     {          public  $browser  =  '*chrome';   }       Jacob  Mather   @thejmather  
  26. 33.

    Our  Second  Test   File:  tests/ChromeExampleTest.php   <?php    

    class  ChromeExampleTest  extends  ExampleTest     {          public  $browser  =  '*chrome';            //  inherited          public  func,on  setUp()          {                  $this-­‐>setBrowser($this-­‐>browser);                  $this-­‐>setBrowserUrl('h_p://jmather.com/');          }   }       Jacob  Mather   @thejmather  
  27. 34.

    <?php  exit(0);   Jacob  Mather   @thejmather     h_p://jmather.com/talks/2012-­‐12-­‐01/

      h_ps://github.com/jmather/phpunit-­‐selenium-­‐first-­‐test