Unit testing with PHPUnit
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,066
On Slideshare
1,555
From Embeds
511
Number of Embeds
4

Actions

Shares
Downloads
45
Comments
0
Likes
1

Embeds 511

http://fercaiscoding.com 498
http://ks202063.kimsufi.com 10
http://91.121.136.24 2
http://www.365dailyjournal.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  •  phpunit --coverage-html ./result TwitterTest.php

Transcript

  • 1. UNIT TESTINGwith PHPUnit
  • 2. about me @ferca_tw ferran caellas puig Core Developer at eyeOSComputer geek and Open Source enthusiast
  • 3. What isUNIT TESTING
  • 4. class CoreTest extends PHPUnit_framework_TestCase { public function TestCount() { $testArray = array(‘value1’,’value2’,’value3’); $countResult = count($testArray); $this->assertEquals(3, $countResult); }}
  • 5. What you want is to write tests that faileven though you think they should work,or tests that succeed even though youthink they should fail.You want to write tests that will pay youback with information. Erich Gamma
  • 6. Writing testsDuring development
  • 7. TDDTEST-DRIVEN DEVELOPMENT
  • 8. Writing testsDuring debugging
  • 9. STEPS1. Verify that you can reproduce the bug.2. Find the smallest-scale demonstration of thebug in the code.3. Write an automated test that fails now butwill succeed when the bug is fixed.4. Fix the bug.
  • 10. CODE COVERAGE The beauty of testing is found not in the effort but in the effiency. Knowing what should be tested is beautiful, and knowing what is being tested is beautiful. Murali Nandigama
  • 11. public function testEmpty() { $stack = array();@depends $this->assertEmpty($stack); return $stack; } /** * @depends testEmpty */ public function testPush(array $stack) { array_push($stack, foo); $this->assertEquals(foo, $stack[count($stack)-1]); $this->assertNotEmpty($stack); return $stack; }
  • 12. /** * @dataProvider provider */@dataProvider public function testAdd($a, $b, $c) { $this->assertEquals($c, $a + $b); } public function provider() { return array( array(0, 0, 0), array(0, 1, 1), array(1, 0, 1), array(1, 1, 3) ); }
  • 13. @expectedException /** * @expectedException InvalidArgumentException * @expectedExceptionMessage Right Message */ public function testExceptionHasRightMessage() { throw new InvalidArgumentException(Some Message, 10); } /** * @expectedException InvalidArgumentException * @expectedExceptionCode 20 */ public function testExceptionHasRightCode() { throw new InvalidArgumentException(Some Message, 10); }
  • 14. expectOutputString public function testExpectFooActualFoo() { $this->expectOutputString(foo); print foo; }
  • 15. assertArrayHasKey()   assertObjectHasA/ribute()   assertClassHasA/ribute()   assertRegExp()   assertClassHasSta4cA/ribute()   assertStringMatchesFormat()   assertContains()   assertStringMatchesFormatFile()  Assertions assertContainsOnly()   assertSame()   assertCount()   assertSelectCount()   assertEmpty()   assertSelectEquals()   assertEqualXMLStructure()   assertSelectRegExp()   assertEquals()   assertStringEndsWith()   assertFalse()   assertStringEqualsFile()   assertFileEquals()   assertStringStartsWith()   assertFileExists()   assertTag()   assertGreaterThan()   assertThat()   assertGreaterThanOrEqual()   assertTrue()   assertInstanceOf()   assertXmlFileEqualsXmlFile()   assertInternalType()   assertXmlStringEqualsXmlFile()   assertLessThan()   assertXmlStringEqualsXmlString()   assertLessThanOrEqual()   assertNull()  
  • 16. setUp() setUpBeforeClass() tearDown() tearDownAfterClass() protected function setUp()Fixtures { $this->stack = array(); } public function testEmpty() { $this->assertTrue(empty($this->stack)); } public function testPush() { array_push($this->stack, foo); $this->assertEquals(foo, $this->stack[count($this->stack)-1]); $this->assertFalse(empty($this->stack)); }
  • 17. markTestIncomplete()Incomplete & Skipped markTestSkipped() $this->markTestIncomplete( This test has not been implemented yet. ); phpunit  -­‐-­‐verbose  SampleTest   PHPUnit  3.6.0  by  Sebas4an  Bergmann.   I   Time:  0  seconds,  Memory:  3.75Mb     There  was  1  incomplete  test:     1)  SampleTest::testSomething   This  test  has  not  been  implemented  yet.     /home/sb/SampleTest.php:12   OK,  but  incomplete  or  skipped  tests!   Tests:  1,  Asser4ons:  1,  Incomplete:  1.  
  • 18. UNIT TESTINGwith PHPUnit