Tests unitaires pour le développement de plugins

17

J'ai besoin d'appliquer des tests unitaires pour l'un de mes plugins. Je l'ai récemment repensé en classes, donc les tests unitaires devraient être plus faciles à appliquer maintenant.

Quelles sont les stratégies efficaces pour tester unitaire mon plugin? J'ai besoin d'un moyen d'utiliser les fonctions de WordPress utilisées dans le plugin, mais je ne devrais pas avoir besoin d'un site WordPress en cours d'exécution (il suffit de tester les données sur la DB AFAIK), non?

J'ai du mal à trouver comment tester uniquement le plugin et non le plugin dans le contexte du site. Je pourrais utiliser Selenium pour cela, mais en ce moment, je veux juste me concentrer sur les tests unitaires des fonctionnalités des classes de plugins, afin de ne pas les casser à chaque mise à jour.

Fernando Briano
la source

Réponses:

14

En tant qu'ancien ingénieur logiciel développant de grandes entreprises qui ont atterri dans une agence interactive, permettez-moi de vous donner quelques réflexions sur les tests lors du développement pour Wordpress:

  1. Votre test unitaire doit tester la plus petite quantité de comportement qu'une classe peut effectuer. Chaque classe devrait pouvoir être testée indépendamment de Wordpress. Si vous avez une dépendance Wordpress, envisagez de créer des objets fictifs et / ou des méthodes dans votre test pour contourner ce problème. En fin de compte, cela changera un peu la façon dont vous écrivez votre code - mais ce sera beaucoup plus testable. Comme d'habitude, pas de déjeuner gratuit.

  2. Lorsque vous atteignez le niveau des tests fonctionnels, c'est là que vous pouvez tester votre code avec les dépendances Wordpress. C'est là que vous testerez réellement que votre plugin effectue réellement un service auquel il est censé servir.

  3. En fonction de ce que fait votre plugin - envisagez d'utiliser des tests basés sur Selenium qui testent la présence de données dans le DOM à l'aide d'ID. Son raisonnablement robuste et il est beaucoup moins susceptible de casser de version en version. Encore une fois, l'astuce consiste à penser à tester dans le cadre de votre cycle de vie de développement logiciel. Les modifications importantes du code se répercutent en cascade sur les modifications importantes de vos tests. Tout cela fait partie du coût de faire des affaires.

Si vous avez besoin d'aide avec l'un des outils pour y parvenir - je serais heureux de répondre si vous ouvrez une nouvelle question. J'utilise à la fois PHPUnit et son extension au sélénium dans le travail que je fais.

Ethan Seifert
la source
1
Salut Ethan, merci pour cette réponse professionnelle. Je ne pouvais pas attendre moins de cette communauté :) J'essaierai d'écrire des tests unitaires pour mes classes et de créer des objets factices pour contourner les fonctions de WordPress. L'étape 2 est la partie la plus difficile pour moi, car j'ai besoin d'une installe WordPress pour une sorte de test automatique, où je pourrais commencer à utiliser Selenium plus tard. Je vais commencer par PHPUnit et voir comment cela se passe. Merci!
Fernando Briano
Réponse parfaite!
rsman
-1

J'ai récemment créé un tutoriel qui prend les informations de mon googling, pour montrer comment:

  1. Utilisez le noyau wordpress pour effectuer des tests unitaires
  2. Masquer les avertissements php obsolètes / session envoyée
  3. Montrez comment définir vos options de plugin dans les tests
  4. Utiliser le même noyau wp faire des tests unitaires pour tester plusieurs plugins

Le tutoriel est , j'espère que ça aide

Daithí
la source