https://github.com/elfn/tdd
Principe du Test Driven Development à travers les tests unitaires
https://github.com/elfn/tdd
Last synced: 11 days ago
JSON representation
Principe du Test Driven Development à travers les tests unitaires
- Host: GitHub
- URL: https://github.com/elfn/tdd
- Owner: Elfn
- Created: 2022-09-30T23:55:12.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-10-04T20:17:37.000Z (almost 4 years ago)
- Last Synced: 2025-02-07T14:22:57.237Z (over 1 year ago)
- Language: Java
- Homepage:
- Size: 1.13 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TDD
Les tests pilotés par le développement, c’est une technique de développement qui permet d’écrire des tests qui échouent avant d’écrire l’implémentation, et cela se fait selon un processus en 3 étapes:
1. **Ecrire des cas de test défaillants**
2. **Reécrire les cas de test pour les faire réussir**
3. **Refactoriser le code et le rendre simple**

### Règles de l’Uncle Bob
- **On est pas autorisé à écrire du code en production, sauf si il s’agit de faire fonctionner un test unitaire défaillant**
- **On est pas autorisé à écrire plus d'un test unitaire que ce qui est suffisant pour échouer ; et les échecs de compilation sont des échecs.**
- **On est pas autorisé à écrire plus de code en production que celui nécessaire à faire fonctionner un test unitaire défaillant**
### Exemple Cas de test TDD
Creer un projet maven via IntelliJ, et créer une classe **Calculator**
```java
public class Calculator {
public static Integer add(Integer n1, Integer n2){
return 0;
}
}
```
Ajouter les dépendances suivantes dans le pom.xml
```xml
org.junit.jupiter
junit-jupiter-engine
5.9.0
test
org.junit.jupiter
junit-jupiter-api
5.9.0
test
```
Ensuite générer des tests unitaires de la classe Calculator
```java
class CalculatorTest {
@Test
void add() {
Integer sum = Calculator.add(1,4);
}
}
```
### 1- Appliquer la première étape du processus TDD
Il faut créer un cas de test défaillant
```java
class CalculatorTest {
@Test
void add() {
Integer sum = Calculator.add(1,4);
Assertions.assertEquals(1, sum);
}
}
```
Ce cas de test est défaillant parce qu’il retourne une erreur au lancement

### 2- Appliquer la deuxième étape du processus TDD
Ré-écrire le cas de test pour le faire fonctionner
```java
class CalculatorTest {
@Test
void add() {
Integer sum = Calculator.add(1,4);
Assertions.assertEquals(0, sum);
}
}
```
Il fonctionne conformément à la logique de la classe

### 3- Appliquer la dernière étape du processus TDD
Refactoriser le code de la classe pour le rendre plus dynamique, simple, et éviter les doublons
```java
public class Calculator {
public static Integer add(Integer n1, Integer n2){
return n1 + n2;
}
}
```
Faire un cas de test qui doit fonctionner
```java
class CalculatorTest {
@Test
void add() {
Integer sum = Calculator.add(1,4);
Assertions.assertEquals(5, sum);
}
}
```
Résultat

# TDD