Introducción a TDD y PHPUnit

2,267 views

Published on

Breve introducción a TDD y PHPUnit

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,267
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introducción a TDD y PHPUnit

  1. 1. IntroducciónPHPUnit / TDD
  2. 2. ¿Que es TDD?Es una metodología de desarrollo ágil
  3. 3. ¿Para que sirve?Código Testeable
  4. 4. ¿Para que sirve?Código Robusto
  5. 5. ¿Para que sirve?Código Robusto
  6. 6. ¿Cómo?Traducción de casosde uso a ejemplos.
  7. 7. ¿Para que sirve?Diseñado desde un punto de vista diferente.
  8. 8. ¿Para que sirve?Funcionalidad Justa … ono?? ...
  9. 9. ¿Cómo?Las decisiones de diseño quedan para la fase dedesarrollo.
  10. 10. ¿Cómo?Escribir la especificación
  11. 11. ¿Cómo?Implementar el codigo para el ejemplo
  12. 12. ¿Cómo?Refactorizar y realizar mejoras.
  13. 13. Test Automáticos ¿Para que?
  14. 14. ¿Cómo?<?phpecho count($array_fixture);echo count($array_fixture) == 1 ? "okn" : "not okn";assertTrue(count($fixture) == 1);function assertTrue($condition) { if (!$condition) { throw new Exception(Assertion failed.); }}
  15. 15. ¿Cómo?<?phpclass FixturesTest extends PHPUnit_Framework_TestCase { public function testCountFixture($array_fixture) { $this->assertEquals(1, count($array_fixture)); }}
  16. 16. ¿Cómo?
  17. 17. Instalaciónpear channel-discover pear.phpunit.depear channel-discover components.ez.nopear channel-discover pear.symfony-project.compear install --alldeps phpunit/PHPUnit
  18. 18. Escribiendo un Test<?php// test/FixturesTest.phprequire_once PHPUnit/Framework.php;require_once ../Fixtures.php;class FixturesTest extends PHPUnit_Framework_TestCase { public function testCountFixturesArray() { $fixtures = new Fixtures(); $fixtures_array = $fixtures->generate(); $this->assertEquals(1, count($fixtures_array)); }}
  19. 19. Data Providers<?phpclass DataTest extends PHPUnit_Framework_TestCase { /** * @dataProvider provider */ 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) ); }}
  20. 20. Excepciones y errores<?phpclass ExceptionTest extends PHPUnit_Framework_TestCase { /** * @expectedException InvalidArgumentException */ public function testException() { throw new InvalidArgumentException(); }}
  21. 21. Excepciones y errores<?phpclass ExpectedErrorTest extends PHPUnit_Framework_TestCase { /** * @expectedException PHPUnit_Framework_Error */ public function testFailingInclude() { include not_existing_file.php; }}
  22. 22. Afirmaciones/** * Asserts that a condition is true. * * @param boolean $condition * @param string $message * @throws PHPUnit_Framework_AssertionFailedError */function assertTrue($condition, $message = ){ return PHPUnit_Framework_Assert::assertTrue($condition, $message);}
  23. 23. Afirmaciones/** * Asserts that a variable is of a given type. * * @param string $expected * @param mixed $actual * @param string $message * @since Method available since Release 3.5.0 */function assertInstanceOf($expected, $actual, $message = ){ return PHPUnit_Framework_Assert::assertInstanceOf($expected, $actual, $message);}
  24. 24. Afirmaciones/** * Asserts that two variables are equal. * * @param mixed $expected * @param mixed $actual * @param string $message * @param float $delta * @param integer $maxDepth * @param boolean $canonicalize * @param boolean $ignoreCase */function assertEquals($expected, $actual, $message = , $delta = 0, $maxDepth = 10,$canonicalize = FALSE, $ignoreCase = FALSE){ return PHPUnit_Framework_Assert::assertEquals($expected, $actual, $message, $delta,$maxDepth, $canonicalize, $ignoreCase);}
  25. 25. AfirmacionesPHPUnit tiene másde 120 Asserts !!!
  26. 26. Afirmaciones Pero mejor NO las repasamos ahora !!!
  27. 27. setUp() y tearDown()<?phpclass FixturesTest extends PHPUnit_Framework_TestCase { protected $item = false; public function setUp() { $this->item = new ItemObject(); } public function tearDown() { unset($this->item); }}
  28. 28. Aplausos !!!

×