Tests unitaires avec phpunit

Tests unitaires avec phpunit

Ce tutoriel suppose que vous utilisez PHP 8.1 ou PHP 8.2. Vous apprendrez à écrire des tests unitaires simples et à télécharger et exécuter PHPUnit.

La documentation de PHPUnit 10 est ici.

Téléchargement : vous pouvez utiliser l'une des deux méthodes suivantes :

1. Archives PHP (PHAR)

Nous distribuons une Archive PHP (PHAR) qui contient tout ce dont vous avez besoin pour utiliser PHPUnit 10 . Téléchargez-le simplement ici et rendez-le exécutable :

wget -O phpunit https://phar.phpunit.de/phpunit-10.phar
➜ chmod +x phpunit
➜ ./phpunit --version
PHPUnit 10.0.0 by Sebastian Bergmann and contributors.

2.Compositeur

Vous pouvez utiliser Composer pour ajouter PHPUnit à votre projet en tant que dépendance locale, par projet, au moment du développement :

➜ composer require --dev phpunit/phpunit ^10./vendor/bin/phpunit --version
PHPUnit 10.0.0 by Sebastian Bergmann and contributors.

Les exemples présentés ci-dessus supposent que composer se trouve sur votre $PATH.

Votre composer.json devrait ressembler à ceci :

{
    
    
    "autoload": {
    
    
        "classmap": [
            "src/"
        ]
    },
    "require-dev": {
    
    
        "phpunit/phpunit": "^10"
    }
}

le code

src/Email.php

<?php 
declare(strict_types=1);
final class Email
{
    
    
    private string $email;
    private function __construct(string $email)
    {
    
    
        $this->ensureIsValidEmail($email);
        $this->email = $email;
    }
    public static function fromString(string $email): self
    {
    
    
        return new self($email);
    }
    public function asString(): string
    {
    
    
        return $this->email;
    }
    private function ensureIsValidEmail(string $email): void
    {
    
    
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    
    
            throw new InvalidArgumentException(
                sprintf(
                    '"%s" is not a valid email address',
                    $email
                )
            );
        }
    }
}

code d'essai

tests/EmailTest.php

<?php 
declare(strict_types=1);
use PHPUnit\Framework\TestCase;
final class EmailTest extends TestCase
{
    
    
    public function testCanBeCreatedFromValidEmail(): void
    {
    
    
        $string = '[email protected]';
        $email = Email::fromString($string);
        $this->assertSame($string, $email->asString());
    }
    public function testCannotBeCreatedFromInvalidEmail(): void
    {
    
    
        $this->expectException(InvalidArgumentException::class);
        Email::fromString('invalid');
    }
}

Exécution du test : l'une des deux méthodes suivantes est disponible :

1. Archives PHP (PHAR)

./phpunit --bootstrap src/autoload.php tests
PHPUnit 10.0.0 by Sebastian Bergmann and contributors.
..                                        2 / 2 (100%)
Time: 70 ms, Memory: 10.00MB
OK (2 tests, 2 assertions)

Ce qui précède suppose que vous avez téléchargé phpunit.phar et que vous l'avez placé dans votre $PATH en tant que phpunit, et que src/autoload.php est un script qui configure le chargement automatique pour la classe testée. De tels scripts sont généralement générés à l'aide d'outils tels que phpab.

--bootstrap src/autoload.php demande au programme d'exécution de test en ligne de commande PHPUnit d'inclure src/autoload.php avant d'exécuter les tests.
tests demande au programme d'exécution de test en ligne de commande PHPUnit d'exécuter tous les tests déclarés dans le code source *Test.php fichier dans le répertoire tests .

2.Compositeur

./vendor/bin/phpunit tests
PHPUnit 10.0.0 by Sebastian Bergmann and contributors.
..                                        2 / 2 (100%)
Time: 70 ms, Memory: 10.00MB
OK (2 tests, 2 assertions)

Ce qui précède suppose que supplier/autoload.php (le script de chargement automatique géré par Composer) existe et est capable de charger le code de la classe Email. Selon la configuration du chargement automatique, vous devrez peut-être exécuter composer dump-autoload maintenant.

tests demande au lanceur de tests en ligne de commande PHPUnit d'exécuter tous les tests déclarés dans le fichier de code source Test.php dans le répertoire tests.

Certains composants de test sont recommandés :

https://packagist.org/packages/mockery/mockery
phpunit/phpunit
fakerphp/faker
https://github.com/phpstan/phpstan
vimeo/psalm
mikey179/vfsstream
rector/rector

citation

déclarer et strict_types

ps:declare(strict_types=1);

Typage strict
Par défaut, PHP contraindra les valeurs du mauvais type au type scalaire attendu par la fonction s'il le peut. Par exemple, si un paramètre d’une fonction est censé être une chaîne, mais qu’un entier est transmis, la fonction finale obtiendra une valeur de type chaîne.
Le mode strict peut être activé fichier par fichier. En mode strict, seule une variable qui correspond exactement à la déclaration de type sera acceptée, sinon une TypeError sera levée. La seule exception est qu'un entier peut être transmis à une fonction attendant un flottant.
Utilisez l'instruction declare et l'instruction strict_types pour activer le mode strict
https://blog.csdn.net/joshua317/article/details/121252625

affirme même

Utiliser des opérateurs pour vérifier l'identité
Signaler les erreurs identifiées par si deux variables ont des types et des valeurs différents ou si deux variables ne font pas référence au même objet
https://docs.phpunit.de/en/10.1/assertions.html#assertsame

Je suppose que tu aimes

Origine blog.csdn.net/heshihu2019/article/details/132295983
conseillé
Classement