Cours 24 - Tests unitaires
Table des matières
Objectifs
- Connaître le concept de tests unitaires en PHP avec l'aide de PHPUnit
- Être en mesure d'utiliser les tests unitaires de manière concrète
Déroulement
- Introduction
- Exemple concret
- Faire exercice 24
Documentations
Écoutez la vidéo suivante
- Dans la vidéo, j'installe avec la version 7 de PHP, prenez la version la plus récente 8.3
Allez consulter la doc de PHPUnit
Plus d'infos sur PHPUnit ici
Installation préliminaire
Vous devez installer l'installation de Composer
- Ne pas cocher la case Developer mode
- Ne pas cocher Add this PHP to your path
- Ne pas cocher Use a proxy server to connect to internet
- Installer la version la plus récente de PHP dans la liste.
À l'aide de composer, dans le terminal de votre projet, on va exécuter la commande suivante:
composer require --dev phpunit/phpunit ^11
Cette commande va installer tout ce qui est nécessaire à PHPUnit dans un dossier nommer vendor
Pour vérifier que tout est ok:
./vendor/bin/phpunit --version
Vous devriez voir:
PHPUnit 11.1.3 by Sebastian Bergmann and contributors.
Exemple concret
Fonctions à tester
<?php
function moyenne(array $numbers):float {
return array_sum($numbers) / count($numbers);
}
function mediane(array $numbers):float {
sort($numbers);
$size = count($numbers);
if ($size % 2) {
return $numbers[$size / 2];
} else {
return mediane(
array_slice($numbers, ($size / 2) - 1, 2)
);
}
}
?>
Créer les tests
<?php
require_once "includes/functions.php";
use PHPUnit\Framework\TestCase;
class functionsTest extends TestCase
{
public function testMoyenne(){
// Arrange
$numbers = [3, 7, 6, 1, 5];
// Act
$result = moyenne($numbers);
// Assert
$this->assertEquals(4.4, $result, "Erreur dans le calcul d'une moyenne!");
}
public function testMediane(){
// Arrange
$numbers = [3, 7, 6, 1, 5];
// Act
$result = mediane($numbers);
// Assert
$this->assertEquals(4, $result, "Erreur dans le calcul d'une médiane!");
}
}
?>
Faire rouler les tests
Dans le terminal de VS Code, roulez la commande:
./vendor/bin/phpunit tests
Vous devriez voir les résultats!