Talk given in French at ConFoo 2015
Le TDD (Test Driven Development) gagne en popularité dans la communauté PHP. C’est maintenant une pratique accepté. Mais commencer peut sembler difficile.
Dans cette session, nous allons voir ce qu’est le TDD. Nous allons commencer par voir les principes. Puis les outils utilisés, et comment s’en servir au quotidien. Nous allons aussi voir les difficultés souvent rencontrées et comment les contourner.
5. Tests unitaires
est une procédure permettant de vérifier le bon
fonctionnement d'une partie précise d'un
logiciel ou d'une portion d'un programme
(appelée « unité » ou « module »).
http://fr.wikipedia.org/wiki/Test_unitaire
5
18. Preparing For Your Tests
setup() -> Avant chaque test
teardown() -> Après chaque test
setUpBeforeClass() + tearDownAfterClass()
Une fois par test
18
21. 3 règles du TDD - Uncle Bob
● You are not allowed to write any production
code unless it is to make a failing unit test
pass.
● You are not allowed to write any more of a
unit test than is sufficient to fail;
○ and compilation failures are failures.
● You are not allowed to write any more
production code than is sufficient to pass the
one failing unit test.
http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
21
22. Red - Green - Refactor
Red
Écrire un test qui échoue
22
23. Red - Green - Refactor
Green
Le faire passer
23
24. Red - Green - Refactor
Refactor
Régler les raccourcis pris
24
25. /** @test */
public function create() {
$this->assertNotNull(new Factorial);
}
25
30. public function setup() {
$this->facto = new Factorial;
}
/** @test */
public function factOf1() {
$this->assertSame(1,
$this->facto->fact(1));
}
30
31. /** @test */
public function factOf2() {
$this->assertSame(2,
$this->facto->fact(2));
}
31
33. Plus de duplication
/** @test */
public function factOf1() {
$this->assertSame(1,
$this->facto->fact(1));
}
/** @test */
public function factOf2() {
$this->assertSame(2,
$this->facto->fact(2));
} 33