Nous utilisons phpunit dans notre projet et utilisez un essentiellement, nos tests sont autonomes. Vous pouvez appeler tout sauf non. ' Attendez un moment. EM>' P> C'est vrai si nous forcions nos développeurs à utiliser occasionnellement, cela le rend incroyablement Difficile de déterminer pourquoi les tests sur une machine de développeur se brisent et pourquoi ils fonctionnent sur une autre. Il faut juste oublier que le bootstrap est pas em> la seule chose que nous devons avoir le même environnement de test. N'oubliez pas que puisque vous ne pouviez pas oublier le bootstrap si vous avez essayé, car il est dans les tests eux-mêmes, oubliez d'autres paramètres, en particulier généralement - optionnels comme celui-ci (si vous êtes dans le dossier avec le En fait - c'est arrivé plusieurs fois. P> Un coup d'œil curseur au code suggère que la réponse est sans configuration et semble vraiment être chargée Avant que les fichiers de test soient même tirés: p> phpunit.xml code> pour assurer des éléments tels que
Backupglobals code> est désactivé. P> Pour assurer en outre que le chemin Inclure est défini et que l'autoloading est actif, nous en cascadons également nos bottes de test. C'est-à-dire que tous les tests et toutes les suites ALTESTS ont un
requiss_once (__ dir__. '/../ bootstrap.php'); code> en haut, jusqu'au niveau du dossier de base, où Il lit évidemment
requir_once (__ dir__. '/bootstrap.php'); code> et le fichier bootstrap réel réside. p>
allTestestS.php code> dans n'importe quel dossier et n'importe quel
* test.php code> par lui-même et ils seront exécutés avec la bonne configuration. P>
phpunit --configuration = chemin / à / phpunit.xml code> ou ils sont dans le dossier avec le
phpunit.xml code> (afin que PHPUnit le tire hors du répertoire de travail actuel lorsqu'il est exécuté). P>
PHPUNIT.XML code>, il est automatiquement tiré), est facile. p>
Question H1>
phpunit.xml code> à utiliser dans le fichier de test étant exécuté, strong> tel que dans notre fichier bootstrap de manière commodément omniprésente,
[sample of part of our phpunit.xml]
<phpunit
backupGlobals="false"
backupStaticAttributes="false"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
syntaxCheck="false"
processIsolation="false"
colors="true">
3 Réponses :
Réponse directe: Non, vous ne pouvez pas faire ça. P>
Histoire plus longue - Ce type de problème est mieux résolu en changeant les habitudes des développeurs. P>
Voici nous le faisons: P>
le faire comme ça signifie abandonner la liberté de démarrer PHPUnit de n'importe quel répertoire, mais d'être honnête - je n'ai pas l'impression que c'est une perte du tout. p>
Les gains sont beaucoup plus gros: la quantité de code de ménage est réduite, les développeurs ne peuvent rien oublier et les résultats sont donc cohérents. p>
Vous voyez, notre problème est que nous avons cette première politique - mais les Devs leur sont dit une fois et il n'y a rien de ne rien rappeler de le faire. Il fonctionne 99 sur une centaine de cas, lorsque vous souhaitez exécuter toute la suite Test de toute façon, car vous devez vous assurer que vos modifications ne se cassent pas, et que vous le faites à partir du répertoire racine - puis est oublié quand vous Voulez-vous faire un test rapide d'une branche de répertoire.
En cela, je pense que votre point 2 est très perspicace; Peut-être supprimer AllTestS.php dans les sous-répertoires «forcerait» le processus de pensée un peu mieux, servez de rappel du phpunit.xml code>. Je vais donner cela plus de pensée et rebondirez-le de mes collègues, peut-être que c'est la meilleure solution.
C'est un choix entre changer les habitudes et créer un enfer de maintenance (avec de nombreux fichiers de configuration à synchroniser). Bonne chance :)
Ma solution consiste à ajouter une fonction Bash puis ajoutez ceci à tous les fichiers de dev .bstrucc et ils peuvent basculer pour l'utiliser. P> Nous aimons les appeler de alors vous ajoutez vim code> Je devais donc ajouter ceci à
.vimrc code>:
Set shellcmdflag = -ic code> p>
nmap; t :! PHPU% code> Pour exécuter le fichier de test dans lequel vous êtes actuellement. p> p>
Vous pouvez mettre à jour le script de démarrage (fichier BAT Windows ou shell sur * Nix) et avoir la logique à configurer à l'emplacement du phpunit.xml. Si c'est dans le répertoire actuel, utilisez-le, sinon pointez le principal. P>
Je suis également d'accord avec ANTI, que tous les tests doivent toujours être exécutés, comme vous souhaitez vous assurer que les modifications, même dans une branche de répertoire, n'affectent pas les autres CODE. Par conséquent, continuez toujours du haut de l'arbre. Cela nécessite également que le test exécute rapidement, mais je n'ai pas vraiment eu de problème avec PHPUnit à ce sujet. P>
Maintenance du phpunit.xml Dans chaque répertoire serait un cauchemar de maintenance, sauf si elle était liée symboliquement à partir d'autres chemins pour vous assurer qu'il n'y avait qu'un seul fichier. P>