Supplément 37 de la série de guides officiels du Yii Framework - Tests : présentation

黄舟
Libérer: 2023-03-05 18:34:01
original
1104 Les gens l'ont consulté



Les tests sont une partie essentielle du développement de logiciels, que nous en soyons conscients ou non, lors du développement d'applications Web, nous testons toujours. lorsque nous écrivons une classe en PHP, nous pouvons utiliser des instructions d'injection echo ou die pour montrer si nous avons correctement implémenté une certaine méthode lorsque nous implémentons un ensemble de complexes Lors de la création d'une page Web avec un formulaire HTML ; peuvent essayer de saisir des données de test pour confirmer si la page interagit comme prévu. Les développeurs plus avancés écriront du code pour terminer automatiquement ce processus de test, de sorte que chaque fois que nous avons besoin de tester quelque chose, il nous suffit d'appeler le code et de quitter le. reste à l'ordinateur. C'est ce qu'on appelle les tests automatisés et c'est le sujet principal de ce chapitre.

Le support de test fourni par Yii comprend les tests unitaires et tests fonctionnels.

Les tests unitaires vérifient si une unité de code indépendante fonctionne comme prévu. Dans la programmation orientée objet, L'unité de code la plus élémentaire est une classe. Par conséquent, la principale responsabilité des tests unitaires est. pour vérifier que chaque méthode implémentée par cette classe fonctionne normalement. Les tests unitaires sont généralement écrits par la personne qui a développé cette classe.

Les tests fonctionnels vérifient si la fonctionnalité fonctionne comme prévu (comme une opération de validation dans un système de blog). ). Par rapport aux tests unitaires, les tests fonctionnels sont généralement plus avancés car la fonctionnalité à tester implique souvent plusieurs classes. Les tests fonctionnels sont généralement écrits par une personne connaissant très bien la configuration système requise (cette personne peut être soit un développeur, soit un qualité). ingénieur).

1. Développement piloté par les tests

Ce qui suit montre ce qu'on appelle le cycle de développement du développement piloté par les tests (TDD) :

  1. Créer un nouveau test qui couvre la fonctionnalité à implémenter. Le test devrait échouer lors de la première exécution car la fonctionnalité n'a pas encore été implémentée.

  2. Exécutez tous les tests pour vous assurer que ce nouveau test échoue.

  3. Écrivez du code pour faire réussir les tests.

  4. Exécutez tous les tests et assurez-vous que tous les tests réussissent.

  5. Refactorisez le code nouvellement écrit et assurez-vous que ces tests réussissent toujours.

Répétez les étapes 1 à 5 pour promouvoir la mise en œuvre de la fonction globale.

2. Créez un environnement de test

Le support de test fourni par Yii nécessite PHPUnit 3.5 et Selenium Remote Control 1.0. (Pour installer PHPUnit sous Linux, veuillez vous référer à cet article : Étapes détaillées et solutions d'erreur pour l'installation de PHPUnit dans Ubuntu. Pour installer PHPUnit sous Windows, veuillez vous référer à cet article : Tutoriel détaillé sur l'installation de Pear et PHPUnit sous Windows. L'adresse de téléchargement de Selenium est ici : cliquez sur Télécharger)

Lorsque nous utilisons la commande de console yiic webapp pour créer une nouvelle application Yii, elle générera les fichiers et répertoires suivants pour que nous puissions écrire et effectuer des tests.

testdrive/
   protected/                包含了受保护的应用文件
      tests/                 包含了应用测试
         fixtures/           包含了数据 fixtures
         functional/         包含了功能测试
         unit/               包含了单元测试
         report/             包含了 coverage 报告
         bootstrap.php       这个脚本在一开始执行
         phpunit.xml         PHPUnit 配置文件
         WebTestCase.php     基于 Web 的功能测试基类
Copier après la connexion

Comme indiqué ci-dessus, notre code de test est principalement placé dans les trois répertoires fixtures, functional et unit. Le répertoire report est utilisé pour stocker le rapport de couverture de code généré

. Nous pouvons exécuter la commande suivante dans la fenêtre de la console pour exécuter le test (qu'il s'agisse d'un test unitaire ou d'un test fonctionnel) :

% cd testdrive/protected/tests
% phpunit functional/PostTest.php    // 执行单个测试
% phpunit --verbose functional       // 执行 'functional' 下的所有测试
% phpunit --coverage-html ./report unit
Copier après la connexion

La dernière commande ci-dessus exécutera tous les tests du unit puis dans le répertoire report Un rapport de couverture de code est généré dans le répertoire. Notez que pour générer un rapport de couverture de code, vous devez installer et activer l'extension xdebug de PHP.

3. un coup d'oeil au script de démarrage de test

Regardez ce qu'il y a dans le fichier bootstrap.php Tout d'abord, ce fichier est un peu spécial, car il ressemble beaucoup à un script d'entrée, et c'est aussi l'entrée. point pour nous d'exécuter une série de tests


$yiit='path/to/yii/framework/yiit.php';
$config=dirname(__FILE__).'/../config/test.php';
require_once($yiit);
require_once(dirname(__FILE__).'/WebTestCase.php');
Yii::createWebApplication($config);
Copier après la connexion

Comme indiqué ci-dessus, nous incluons d'abord le fichier du framework Yii, qui initialise certaines constantes globales et classes de base de test nécessaires. Ensuite, nous utilisons le fichier de configuration yiit.php pour créer une instance d'application. Si vous regardez le fichier test.php, vous constaterez qu'il hérite du. test.php fichier de configuration, mais il ajoute une classe supplémentaire nommée CDbFixtureManager main.php Composants d'application. Nous présenterons les appareils en détail dans la section suivante. Lors du test des opérations de base de données, nous devons fournir une base de données dédiée aux tests afin que l'exécution des tests ne se produise pas. interférer avec les activités normales de développement ou de production. Dans ce cas, nous devons supprimer les commentaires de la fixture configuration ci-dessus, puis remplir le

Le DSN (nom de la source de données) de l'attribut est utilisé pour se connecter au


Grâce à un tel script de démarrage, lorsque nous exécutons le test unitaire, nous pouvons obtenir une instance d'application similaire aux exigences du service, et la principale différence est que le test dispose d'un gestionnaire de luminaires et de sa propre base de données de test. .

Tutoriels de la série de tests :

return CMap::mergeArray(
    require(dirname(__FILE__).'/main.php'),
    array(
        'components'=>array(
            'fixture'=>array(
                'class'=>'system.test.CDbFixtureManager',
            ),
            /* 去除以下注释可为测试提供一个数据库连接.
            'db'=>array(
                'connectionString'=>'DSN for test database',
            ),
            */
        ),
    )
);
Copier après la connexion
Série de guides officiels du Yii Framework 38 - Définition d'états spécifiques (fixations)

Série de guides officiels du Yii Framework 39 - Tests unitaires

dbYii Framework Official Guide Series 40 - Tests : tests fonctionnels connectionString

Ce qui précède est le contenu du supplément 37 de la série de guides officiels du Yii Framework - Tests : présentation. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php.cn) !


É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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!