Your SlideShare is downloading. ×
Unit testing with PHPUnit
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Unit testing with PHPUnit

1,953
views

Published on

Published in: Technology, Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,953
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
45
Comments
0
Likes
1
Embeds 0
No embeds

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