Maison > développement back-end > tutoriel php > Comment utiliser JUnit et Mockito pour le développement piloté par les tests en PHP

Comment utiliser JUnit et Mockito pour le développement piloté par les tests en PHP

王林
Libérer: 2023-06-25 14:28:01
original
838 Les gens l'ont consulté

Avec l'avancement continu du développement logiciel, le développement piloté par les tests (TDD) est devenu un modèle de développement de plus en plus populaire. Dans le processus de TDD, les tests deviennent le cœur du processus de développement, et JUnit et Mockito sont deux frameworks de tests couramment utilisés. En développement PHP, comment utiliser JUnit et Mockito pour TDD ? Une introduction détaillée sera donnée ci-dessous.

1. Introduction à JUnit et Mockito

JUnit est un framework de test de langage Java. Il aide les développeurs Java à écrire et à exécuter des tests répétés et fournit des assertions pratiques pour vérifier les résultats des tests. Par la suite, JUnit a évolué vers un framework de test largement utilisé qui prend désormais en charge plusieurs langages de programmation.

Mockito est un framework Mock écrit pour Java qui aide les développeurs à créer des objets Mock et à définir leur comportement. Les objets fictifs ont la même interface que les objets réels, mais leur implémentation est fausse. Cette fausse implémentation peut être utilisée dans un contexte de test pour simuler le comportement d'objets réels, permettant ainsi un contrôle plus fin des tests unitaires.

2. Installer et configurer JUnit et Mockito

L'utilisation de JUnit et Mockito en PHP nécessite l'installation des extensions PHPUnit et PHPUnit_MockObject. Ils peuvent être installés à l'aide de la commande suivante :

composer require --dev phpunit/phpunit
composer require --dev phpunit/phpunit-mock-objects
Copier après la connexion

Après avoir terminé l'installation, vous pouvez utiliser Mockito dans les tests PHPUnit.

3. Utilisez JUnit pour le développement piloté par les tests

Dans le processus d'utilisation de JUnit pour TDD, chaque cycle de développement se compose de deux étapes : les tests et le développement. Dans la première étape de TDD, vous devez d’abord écrire le code du scénario de test. En PHP, vous pouvez utiliser PHPUnit pour écrire du code de scénario de test.

Ce qui suit est un exemple de code de scénario de test écrit avec JUnit :

<?php
//引入PHPUnit和要测试的类
use PHPUnitFrameworkTestCase;
use AppCalculator;

class CalculatorTest extends TestCase {
    //测试方法
    public function testAdd() {
        //实例化被测类
        $calculator = new Calculator();
        //测试断言
        $this->assertEquals(8, $calculator->add(3, 5));
    }
}
?>
Copier après la connexion

Dans l'exemple de code, la méthode assertEquals fournie par PHPUnit est utilisée pour comparaison Si le résultat attendu est cohérent avec le résultat de l'opération. Si les résultats du test sont incohérents, le test échoue. assertEquals方法来比较预期的结果与运算结果是否一致。如果测试结果不一致,则测试失败。

在进行TDD的下一个步骤时,需要编写被测代码。在PHP中,可以将被测代码单独封装为一个类或者函数。

下面是一个使用PHP编写的计算器代码:

<?php
namespace App;

class Calculator {
    public function add($a, $b) {
        return $a + $b;
    }
}
?>
Copier après la connexion

在编写完被测代码后,再运行PHPUnit测试,进行测试结果的验证。如果测试成功,则进行下一个开发周期。

四、使用Mockito进行测试驱动开发

在使用Mockito进行TDD过程中,需要先确定被测对象所依赖的其他对象,并使用Mockito框架来创建虚拟对象。

下面是一个使用Mockito创建虚拟对象的示例:

<?php
//引入Mockito
use PHPUnitFrameworkTestCase;
use PHPUnitFrameworkMockObjectMockObject;

class CalculatorTest extends TestCase {
    public function testAdd() {
        //创建被测对象的Mock对象
        $mockedDependency = $this->getMockBuilder(Dependency::class)
            ->getMock();
        
        //实例化要测试的类,并将Mock对象注入依赖
        $calculator = new Calculator($mockedDependency);
        
        //测试断言
        $this->assertEquals(8, $calculator->add(3, 5));
    }
}
?>
Copier après la connexion

在示例代码中,使用了Mockito提供的getMockBuilder

Lorsque vous passez à l'étape suivante de TDD, vous devez écrire le code sous test. En PHP, le code testé peut être empaqueté individuellement sous forme de classe ou de fonction.

Ce qui suit est un code de calculatrice écrit en PHP :

rrreee

Après avoir écrit le code testé, exécutez le test PHPUnit pour vérifier les résultats du test. Si le test réussit, passez au cycle de développement suivant.

4. Utilisez Mockito pour le développement piloté par les tests #🎜🎜##🎜🎜#Dans le processus d'utilisation de Mockito pour TDD, vous devez d'abord déterminer les autres objets dont dépend l'objet testé, et utilisez le framework Mockito pour les créer Objet virtuel. #🎜🎜##🎜🎜#Ce qui suit est un exemple d'utilisation de Mockito pour créer un objet virtuel : #🎜🎜#rrreee#🎜🎜#Dans l'exemple de code, la méthode getMockBuilder fournie par Mockito est utilisé pour créer un objet virtuel. Instanciez ensuite l'objet testé, injectez l'objet factice et exécutez le test. #🎜🎜##🎜🎜#Il est à noter que Mockito sert uniquement à créer des objets virtuels et ne fournit pas de méthodes de test. La méthode de test utilisant Mockito est la même que la méthode de test PHPUnit normale. #🎜🎜##🎜🎜# 5. Résumé #🎜🎜##🎜🎜# Dans le développement PHP, l'utilisation de JUnit et Mockito pour TDD peut grandement améliorer la qualité du code et l'efficacité du développement. En rédigeant des cas de test, les développeurs peuvent aider à définir les exigences et les résultats attendus. L'utilisation de Mockito peut aider les développeurs à mieux contrôler le comportement des objets pendant les tests. Lorsque les scénarios de test réussissent, les développeurs peuvent fournir du code dans un environnement réel avec une plus grande confiance. #🎜🎜#

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal