2010-03-25 8 views
1

En ce qui concerne la programmation GUI (au moins pour le Web), je pense que la seule chose qui pourrait être utile au test unitaire est certaines des méthodes privées *. Alors que les tests unitaires sont parfaitement adaptés au code back-end, je pense qu'il ne correspond pas tout à fait aux classes GUI.Test automatique des méthodes privées liées à l'interface graphique

Quelle est la meilleure façon d'ajouter un test automatique de ceux-ci?


* Pourquoi je pense que les seules méthodes utiles à tester est privé:

Souvent, quand j'écris des classes GUI ne sont même pas des méthodes publiques, sauf pour le constructeur. Les méthodes publiques, le cas échéant, sont triviales, et le constructeur fait la plus grande partie du travail en appelant des méthodes privées. Ils reçoivent des données du serveur, font beaucoup de sorties triviales et alimentent les données du constructeur des autres classes qui s'y trouvent, en ajoutant des écouteurs qui appellent (plus ou moins directement) le serveur ... La plupart du temps trivial (la partie la plus difficile est la mise en page: css, IE, etc.) mais parfois je crée une méthode privée qui fait quelques astuces avancées, que je ne veux absolument pas voir publiquement (parce qu'elle est étroitement liée à la mise en œuvre de la mise en page, et susceptible de changer), mais est suffisamment compliqué à briser. Ceux-ci sont souvent seulement appelés par le constructeur ou à plusieurs reprises par des événements dans le code, et non par des méthodes publiques. Je voudrais avoir un moyen de tester ce type de méthodes, sans le rendre public ou recourir à la tromperie de réflexion.

(BTW: J'utilise actuellement GWT, mais je pense cela vaut pour la plupart des langues/cadres que j'ai utilisé lors du codage pour GUI)

+0

Je sais qu'il y a déjà beaucoup de questions sur les méthodes privées de tests unitaires, mais je n'en ai trouvé aucune axée sur les ... –

Répondre

1

au lieu d'insister que tout doit être privé, vous devriez envisager d'adopter l'un des nombreux modèles de conception liés à l'interface utilisateur, tels que MVC, MVP ou MVVM.

Vous interface utilisateur déléguerait toute logique à testable UI/Présentation- spécifiques des classes avec des membres du public. Ces implémentations ne polluent pas votre modèle de domaine principal car elles sont toujours spécifiques à l'interface utilisateur et peuvent être implémentées dans des bibliothèques distinctes.

Vous pouvez tester une telle bibliothèque de présentation à votre guise et l'utiliser pour effectuer Subcutaneous Tests.

+0

Ok, bonne réponse. Mais je trouve étrange que les tests unitaires exigent que vous violiez le principe de la dissimulation de l'information. –

+0

Je ne suis pas au courant de ce principe, mais les tests unitaires s'intègrent parfaitement aux principes SOLID; en particulier SRP et OCP. –

Questions connexes