Maison  >  Article  >  développement back-end  >  Comment utiliser PHPUnit pour tester les exceptions dans le développement PHP

Comment utiliser PHPUnit pour tester les exceptions dans le développement PHP

王林
王林original
2023-06-27 09:21:07593parcourir

PHP est un langage de programmation populaire qui offre aux développeurs de logiciels de nombreuses fonctionnalités et outils riches. Parmi eux, PHPUnit est un framework de test PHP bien connu utilisé pour aider les développeurs à créer et à exécuter divers types de tests tels que des tests unitaires, des tests système et des tests d'intégration. Cet article explique comment utiliser PHPUnit pour les tests d'exceptions dans le développement PHP, vous aidant ainsi à mieux contrôler la qualité et la fiabilité de votre code.

1. Qu'est-ce que le test d'anomalie ?

Les tests d'exception sont un type de test logiciel qui se caractérise par le test du comportement d'un morceau de code face à des entrées ou des situations inattendues. Les tests d'exception peuvent aider les développeurs à tester si le code dans des conditions anormales peut le gérer normalement et renvoyer les résultats de sortie corrects. Par exemple, lors de l'utilisation d'une fonction, si les paramètres transmis ne répondent pas aux exigences de la fonction, une exception peut être levée. Le but du test d'exception est de tester la manière dont la fonction gère les exceptions.

Les tests d'exception peuvent aider les développeurs à trouver et à corriger les erreurs potentielles à temps, et à garantir que le système peut fonctionner normalement face à différentes entrées et situations.

2. Comment PHPUnit effectue-t-il des tests anormaux ?

PHPUnit est un puissant framework de test PHP qui fournit un ensemble d'API (interfaces de programmation d'applications) qui permettent aux développeurs d'écrire facilement divers cas de test, y compris des tests d'exception. L'API de test d'exception de PHPUnit se compose de deux fonctions, à savoir les fonctions expectException() et expectExceptionMessage(). La fonction

  1. expectException() La fonction

expectException() est utilisée pour tester si le code lèvera une exception dans certaines circonstances. Sa syntaxe est la suivante :

/**
 * 测试函数是否抛出指定的异常
 * 
 * @param string $exceptionClassName
 *            异常的类名
 * @throws PHPUnit_Framework_AssertionFailedError 如果没有抛出异常或者抛出的异常类型不匹配
 */
public function expectException($exceptionClassName);

Cette fonction accepte un paramètre de type chaîne, indiquant le nom de la classe d'exception à tester. Lorsque le code testé ne lève pas cette exception, PHPUnit lèvera une exception PHPUnit_Framework_AssertionFailedError, indiquant que le test a échoué.

Par exemple, si vous souhaitez tester si une fonction peut lever une InvalidArgumentException lorsque des paramètres illégaux sont transmis, vous pouvez utiliser le code de test suivant :

public function testInvalidArgumentException()
{
    $this->expectException(InvalidArgumentException::class);

    // 调用目标函数,并传入不合法的参数
    myFunction("invalidArg");
}

Dans ce code de test, nous spécifions d'abord la cible à l'aide de l'expectException() function Le type d'exception que la fonction doit lever est InvalidArgumentException. Ensuite, nous appelons la fonction cible myFunction() et transmettons un paramètre illégal. Si la fonction renvoie une InvalidArgumentException lors du traitement du paramètre, le test réussira ; sinon, le test échouera et lancera une exception PHPUnit_Framework_AssertionFailedError. La fonction

  1. expectExceptionMessage() La fonction

expectExceptionMessage() est utilisée pour tester si le message d'exception répond aux attentes lorsqu'un type d'exception spécifié est levé. Sa syntaxe est la suivante :

/**
 * 测试函数抛出的异常消息是否符合期望
 *
 * @param string $expectedMessage
 *            期望的异常消息
 * @throws PHPUnit_Framework_AssertionFailedError 如果异常消息不符合期望
 */
public function expectExceptionMessage($expectedMessage);

Cette fonction accepte un paramètre de type chaîne, indiquant le message d'exception attendu. Si le code testé lève une exception, mais que le message d'exception est incohérent avec le message d'exception attendu, PHPUnit lèvera une exception PHPUnit_Framework_AssertionFailedError, indiquant que le test a échoué.

Par exemple, si vous souhaitez tester qu'une fonction renvoie une InvalidArgumentException lorsque des paramètres illégaux sont transmis et que le message d'exception doit être "Invalid argument", vous pouvez utiliser le code de test suivant :

public function testInvalidArgumentExceptionMessage()
{
    $this->expectException(InvalidArgumentException::class);
    $this->expectExceptionMessage("Invalid argument");

    // 调用目标函数,并传入不合法的参数
    myFunction("invalidArg");
}

Dans ce code de test, Nous utilisons d’abord la fonction expectException() pour spécifier le type d’exception que la fonction cible doit lancer comme InvalidArgumentException. Ensuite, nous utilisons la fonction expectExceptionMessage() pour spécifier le message d'exception comme « Argument invalide ». Enfin, nous appelons la fonction cible myFunction() et transmettons un paramètre illégal. Si la fonction lève une InvalidArgumentException lors du traitement du paramètre et que le message d'exception est comme prévu, le test réussira ; sinon, le test échouera et lèvera une exception PHPUnit_Framework_AssertionFailedError.

3. Résumé

PHPUnit fournit un ensemble d'API de test d'exception simples et faciles à utiliser qui peuvent aider les développeurs PHP à écrire et exécuter rapidement divers cas de test. Lors de l'exécution de tests d'exception, nous pouvons utiliser la fonction expectException() pour spécifier le type d'exception à tester, et la fonction expectExceptionMessage() pour spécifier le message d'exception afin de garantir que le code peut renvoyer correctement les informations d'exception lors de la gestion des exceptions. En utilisant l'API de test d'exception de PHPUnit, nous pouvons mieux contrôler la qualité et la fiabilité du code et améliorer la stabilité et la maintenabilité du système logiciel.

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