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).
Ce qui suit montre ce qu'on appelle le cycle de développement du développement piloté par les tests (TDD) :
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.
Exécutez tous les tests pour vous assurer que ce nouveau test échoue.
Écrivez du code pour faire réussir les tests.
Exécutez tous les tests et assurez-vous que tous les tests réussissent.
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.
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 的功能测试基类
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
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.
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);
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
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', ), */ ), ) );
Série de guides officiels du Yii Framework 39 - Tests unitaires
db
Yii 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) !