2009-04-27 12 views
1

J'utilise Bazaar pour le contrôle de version, ce dont je suis très content. Dans Bazaar, chaque arbre/projet dans le contrôle de source s'appelle une 'branche'.Contrôle PHP et source: où placer les tests unitaires, etc?

Actuellement, j'ai une branche 'principale' pour l'application actuelle, et une branche 'dev' qui héberge des choses comme les tests unitaires, ainsi que le manuel utilisateur, etc. De cette façon, l'application et ses tests associés sont versionnés, mais séparément. Cependant, je soupçonne que la façon dont je le fais n'est pas la meilleure façon de le faire. Par exemple, si je devais créer des branches de publication à partir de cette branche "principale", ces branches de publication ne seraient plus synchronisées avec les tests unitaires, sauf si je les ramifiais de la même manière.

Actuellement, afin de créer un instantané de l'application, je viens d'exporter tous les fichiers de cette branche principale et de les compresser, car il n'y a rien dans l'arborescence de cette branche qui sera envoyée aux clients.

Quelle serait la meilleure façon de faire ce que je fais? Les tests unitaires doivent-ils aller dans la même branche principale que l'application, et si oui, comment créer facilement un instantané, c'est-à-dire l'équivalent d'un 'build quotidien' qui ne contient que les fichiers qui seront distribués? l'application?

Merci à tous pour vos réponses. Il était difficile de décider quelle réponse accepter. La solution que j'ai suivie est d'avoir mes tests dans un sous-répertoire 'tests' de mon arbre principal; Je pourrais facilement le retirer plus tard si je ne voulais pas distribuer les tests.

Répondre

6

Vous voulez absolument garder vos tests unitaires et votre code le plus proche possible. Le processus que nous suivons est tel:

libs/Core/Login.php 
libs/Core/Process.php 
libs/Core/t/LoginTest.php 
libs/Core/t/ProcessTest.php 

Fondamentalement, créer un module de test unitaire pour chaque partie de votre code, et distinct du code réel en le mettant dans un sous-répertoire. Ensuite, faites passer quelque chose, trouvez tout le code de test unitaire et lancez-le avant de passer à la production.

+0

Merci pour votre réponse, c'est une suggestion soignée. Alors, supprimez-vous tous les sous-répertoires 't' lorsque vous expédiez votre application (ou téléchargez-la sur un serveur public)? – thomasrutter

+0

Nous gardons tout cela ensemble, mais je pouvais voir la nécessité de le retirer. – lennysan

1

Je mettrais le code principal et les tests dans une branche, puis retirerais tout ce que vous pensez être extra avant l'empaquetage.

Je pense que le risque que vos tests ne soient pas synchronisés avec le travail de développement principal compenserait l'effort nécessaire pour écrire un script qui effacera les fichiers que vous ne voulez pas inclure avant de les expédier aux clients. Juste parce que Bazaar permet beaucoup de branches faciles ne signifie pas que vous voulez laisser vos tests aller trop loin du code.

1

Comme mentionné par d'autres, les tests appartiennent à une branche spécifique. Si l'une de vos branches de code est légèrement différente, ses tests devraient également correspondre à cela ..