J'ai lu partout à quel point ils sont géniaux, mais pour une raison quelconque, je n'arrive pas à comprendre comment exactement je suis censé tester quelque chose. Quelqu'un pourrait-il publier un exemple de code et comment le testerait-il? Si ce n'est pas trop compliqué :)
php
unit-testing
testing
tdd
allons y
la source
la source
Réponses:
Il existe un troisième "framework", qui est de loin plus facile à apprendre - encore plus facile que Simple Test, il s'appelle phpt.
Une introduction peut être trouvée ici: http://qa.php.net/write-test.php
Edit: Je viens de voir votre demande d'exemple de code.
Supposons que vous ayez la fonction suivante dans un fichier appelé lib.php :
Vraiment simple et direct, le paramètre que vous transmettez est renvoyé. Regardons donc un test pour cette fonction, nous appellerons le fichier de test foo.phpt :
En un mot, nous fournissons le paramètre
$bar
avec une valeur"Hello World"
et nousvar_dump()
la réponse de l'appel à la fonctionfoo()
.Pour exécuter ce test, utilisez:
pear run-test path/to/foo.phpt
Cela nécessite une installation fonctionnelle de PEAR sur votre système, ce qui est assez courant dans la plupart des cas. Si vous avez besoin de l'installer, je vous recommande d'installer la dernière version disponible. Au cas où vous auriez besoin d'aide pour le configurer, n'hésitez pas à demander (mais fournissez le système d'exploitation, etc.).
la source
run-tests
?Il existe deux frameworks que vous pouvez utiliser pour les tests unitaires. Simpletest et PHPUnit , que je préfère. Lisez les tutoriels sur la façon d'écrire et d'exécuter des tests sur la page d'accueil de PHPUnit. C'est assez simple et bien décrit.
la source
Vous pouvez rendre les tests unitaires plus efficaces en modifiant votre style de codage pour l'adapter.
Je recommande de parcourir le blog de test de Google , en particulier l'article sur l' écriture de code testable .
la source
J'ai roulé le mien parce que je n'avais pas le temps d'apprendre à quelqu'un d'autre façon de faire les choses, cela a pris environ 20 minutes à rédiger, 10 à l'adapter pour le poster ici.
Unittesting m'est très utile.
c'est un peu long mais ça s'explique et il y a un exemple en bas.
Cela produit:
la source
Obtenez PHPUnit. Il est très simple à utiliser.
Commencez ensuite par des affirmations très simples. Vous pouvez faire beaucoup avec AssertEquals avant de vous lancer dans autre chose. C'est un bon moyen de se mouiller les pieds.
Vous pouvez également essayer d'écrire votre test en premier (puisque vous avez donné à votre question la balise TDD), puis d'écrire votre code. Si vous ne l'avez pas fait auparavant, c'est une révélation.
la source
Pour les tests simples ET la documentation, php-doctest est assez sympa et c'est un moyen très simple de commencer car vous n'avez pas à ouvrir un fichier séparé. Imaginez la fonction ci-dessous:
Si vous exécutez maintenant ce fichier via phpdt (exécuteur de ligne de commande de php-doctest), un test sera exécuté. Le doctest est contenu dans le bloc <code>. Doctest est né en python et convient parfaitement pour donner des exemples utiles et exécutables sur la façon dont le code est censé fonctionner. Vous ne pouvez pas l'utiliser exclusivement car le code lui-même serait jonché de cas de test, mais j'ai trouvé qu'il était utile avec une bibliothèque tdd plus formelle - j'utilise phpunit.
Cette 1ère réponse ici résume bien la situation (ce n'est pas unité vs doctest).
la source
phpunit est à peu près le cadre de test unitaire de facto pour php. il existe également DocTest (disponible sous forme de package PEAR) et quelques autres. php lui-même est testé pour les régressions et autres via des tests phpt qui peuvent également être exécutés via pear.
la source
Les tests de réception codée ressemblent beaucoup aux tests unitaires courants, mais ils sont très puissants dans les cas où vous avez besoin de moqueries et de stubbing.
Voici l'exemple de test du contrôleur. Notez la facilité avec laquelle les stubs sont créés. La facilité avec laquelle vous vérifiez que la méthode a été invoquée.
Il y a aussi d'autres choses sympas. Vous pouvez tester l'état de la base de données, le système de fichiers, etc.
la source
Outre les excellentes suggestions sur les frameworks de test déjà données, construisez-vous votre application avec l'un des frameworks Web PHP intégrant des tests automatisés, tels que Symfony ou CakePHP ? Parfois, avoir un endroit pour laisser tomber vos méthodes de test réduit les frictions de démarrage que certaines personnes associent aux tests automatisés et au TDD.
la source
Beaucoup trop pour re-publier ici, mais voici un excellent article sur l'utilisation de phpt . Il couvre un certain nombre d'aspects autour de phpt qui sont souvent négligés, donc cela pourrait valoir la peine d'être lu pour élargir vos connaissances en php au-delà de la simple rédaction d'un test. Heureusement, l'article traite également des tests d'écriture!
Les principaux points de discussion
la source
Je sais qu'il y a déjà beaucoup d'informations ici, mais comme cela apparaît toujours dans les recherches Google, je pourrais aussi bien ajouter Chinook Test Suite à la liste. C'est un cadre de test simple et petit.
Vous pouvez facilement tester vos classes avec lui et également créer des objets simulés. Vous exécutez les tests via un navigateur Web et (pas encore) via une console. Dans le navigateur, vous pouvez spécifier quelle classe de test ou même quelle méthode de test exécuter. Ou vous pouvez simplement exécuter tous les tests.
Une capture d'écran de la page github:
Ce que j'aime, c'est la façon dont vous affirmez les tests. Ceci est fait avec ce que l'on appelle des «assertions fluides». Exemple:
Et créer des objets simulés est également un jeu d'enfant (avec une syntaxe fluide):
Quoi qu'il en soit, plus d'informations peuvent être trouvées sur la page github avec un exemple de code:
https://github.com/w00/Chinook-TestSuite
la source