Maison  >  Article  >  développement back-end  >  Comment utiliser PHPUnit pour le développement piloté par les tests dans le développement PHP

Comment utiliser PHPUnit pour le développement piloté par les tests dans le développement PHP

WBOY
WBOYoriginal
2023-06-25 14:21:10964parcourir

Utilisez PHPUnit pour le développement piloté par les tests dans le développement PHP

Avec le développement rapide de l'industrie du logiciel, le développement piloté par les tests (TDD) joue un rôle de plus en plus important dans le processus de développement logiciel. PHPUnit est l'un des frameworks de tests les plus couramment utilisés dans le développement PHP. Il fournit un ensemble utile d'outils et de méthodes qui peuvent aider les développeurs à rédiger des tests unitaires de haute qualité et à les intégrer dans des applications PHP. Cet article explique comment utiliser PHPUnit pour TDD dans le développement PHP.

  1. Installer PHPUnit

Vous devez d'abord installer PHPUnit. Il peut être installé via Composer, l'un des gestionnaires de packages les plus populaires pour PHP. Tout d'abord, vous devez créer le fichier composer.json dans le répertoire personnel et ajouter le contenu suivant :

{
    "require-dev": {
        "phpunit/phpunit": "^9.5"
    }
}

La version de PHPUnit 9.5 est spécifiée ici et peut être modifiée si nécessaire. Ensuite, utilisez la commande suivante pour installer PHPUnit :

$ composer install

Une fois l'installation terminée, vous pouvez vérifier si PHPUnit est installé avec succès en utilisant la commande suivante :

$ ./vendor/bin/phpunit --version
  1. Écriture de cas de test

Une fois PHPUnit installé, vous pouvez commencez à écrire des cas de test. Un scénario de test est un ensemble d'unités de test utilisées pour vérifier que diverses parties du code source fonctionnent comme prévu. Chaque scénario de test doit contenir au moins une méthode de test, qui est l'unité du scénario de test utilisée pour vérifier le code. Les méthodes de test sont généralement testées à l'aide des méthodes d'assertion fournies par PHPUnit.

Voici un exemple simple :

<?php
use PHPUnitFrameworkTestCase;

class MyTest extends TestCase
{
    public function testAddition()
    {
        $this->assertEquals(2, 1+1);
    }
}

Dans cet exemple, le cas de test est nommé MyTest et contient une méthode de test testAddition(). La méthode de test utilise la méthode d'assertion assertEquals() pour vérifier si 1 + 1 est égal à 2. Pour plus de détails sur les méthodes d'assertion de PHPUnit, consultez la documentation officielle de PHPUnit.

  1. Exécuter les cas de test

Une fois les cas de test écrits, ils doivent être exécutés pour vérifier que le code s'exécute comme prévu. Les cas de test peuvent être exécutés à l'aide de la commande suivante :

$ ./vendor/bin/phpunit MyTest.php

Dans la commande ci-dessus, MyTest.php est le nom du fichier du scénario de test. Lorsqu'un scénario de test est exécuté, PHPUnit chargera dynamiquement le fichier et exécutera la méthode de test. Si le test réussit, un message vert s'affiche ; si le test échoue, un message rouge s'affiche.

  1. Utilisation de Mocks et de Stubs

Les Mocks et les Stubs sont deux autres fonctionnalités utiles de PHPUnit. Ils sont utilisés pour simuler des objets et des fonctions afin de garantir que le code est exécuté dans le bon contexte.

Les simulations sont un type spécial d'objet utilisé pour simuler et tester le comportement d'autres objets. Dans PHPUnit, les Mocks sont créés à l'aide de la méthode getMock(). Voici un exemple d'utilisation de Mocks :

<?php
use PHPUnitFrameworkTestCase;

class UserRepositoryTest extends TestCase
{
    public function testGetUserById()
    {
        $user = new stdClass();
        $user->id = 1;
        $user->name = 'John';

        $repository = $this->getMock('UserRepository');
        $repository->expects($this->once())
          ->method('getUserById')
          ->with($this->equalTo(1))
          ->will($this->returnValue($user));

        $result = $repository->getUserById(1);

        $this->assertSame($user, $result);
    }
}

Dans le code ci-dessus, utilisez la méthode getMock() pour créer des Mocks de UserRepository. Ensuite, utilisez la méthode expects() pour spécifier la méthode à simuler et utilisez la méthode with() pour spécifier les paramètres d'entrée. Enfin, utilisez la méthode will() pour spécifier le résultat de l'opération de simulation.

Stubs est un autre outil similaire à Mocks pour les fonctions moqueuses. Dans PHPUnit, vous pouvez utiliser le code suivant pour le stubbing :

<?php
use PHPUnitFrameworkTestCase;

class MyTest extends TestCase
{
    public function testMyFunction()
    {
        $stub = $this->getMockBuilder('SomeClass')
                     ->getMock();

        $stub->method('myFunction')
             ->willReturn('foo');

        $this->assertSame('foo', $stub->myFunction());
    }
}

Dans cet exemple, utilisez d'abord la méthode getMockBuilder() pour créer des Mocks de SomeClass. Ensuite, utilisez la méthode method() pour spécifier la fonction qui doit être simulée et utilisez la méthode willReturn() pour spécifier le résultat de l'opération de simulation.

  1. Conclusion

PHPUnit fournit aux développeurs PHP un moyen fiable d'écrire des tests unitaires de haute qualité pour garantir que le code s'exécute comme prévu. Dans cet article, nous avons expliqué comment utiliser PHPUnit pour le développement piloté par les tests et comment simuler des objets et des fonctions à l'aide de Mocks et de Stubs. Lorsque vous utilisez PHPUnit pour un développement piloté par les tests, n'oubliez pas d'écrire des cas de test avant d'écrire du code. Dans de nombreux cas, des cas de test bien rédigés peuvent fournir une meilleure qualité de code et de meilleurs résultats.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn