2010-11-19 5 views
1

J'essaie d'écrire des tests unitaires pour un jeu que j'ai créé. Le jeu est une implémentation de tic tac toe qui interagit avec l'utilisateur et prend des entrées à partir de la ligne de commande. Je ne suis pas sûr de savoir comment je peux écrire un test qui va prendre et vérifier l'entrée de l'utilisateur. Par exemple: Lors de l'exécution: le programme demande à l'utilisateur d'entrer son nom et son symbole ('x' ou '0') puis de continuer à accepter les entrées de position. Est-ce que je crée une méthode @Before et écris des instructions d'entrée à l'intérieur de cette méthode?Test d'unité pour les entrées utilisateur - Java

ou y a-t-il une meilleure façon de le faire? Tout écrire dans ma méthode @Before le rendra extrêmement gros.

Des suggestions? S'il vous plaît aider.

Merci

Répondre

1

Idéalement, vous divisez votre classe d'entrée en une interface et une implémentation, puis créez un MockInput à des fins de test. Quand un test nécessitait une fausse entrée utilisateur, il suffit de faire un simulacre pour l'occasion et de continuer. Le symbole et le nom peuvent être codés en dur, mais cela vous donne une certaine flexibilité.

Étant donné la réponse de hhafez, l'un d'entre nous répond clairement à la mauvaise question ... et je ne suis pas sûr que ce soit lui. Eh bien, ce sera utile de toute façon.

+0

merci. les deux ont aidé. :) – JJunior

1

Vous dites que vous voulez écrire

un test qui va prendre et vérifier l'entrée utilisateur

Vous ne devriez pas avoir une classe qui fait les deux, prendre et vérifier la contribution de l'utilisateur, c'est une mauvaise cohésion. A la place, vous avez deux classes: un validateur (ou un vérificateur ou quel que soit le nom que vous voulez l'appeler) et un processeur d'entrée qui prend l'entrée de l'utilisateur et construit un objet que le validateur comprend. Une fois que vous avez séparé les préoccupations, écrire un test de junit pour votre Validator devrait être assez simple. En ce qui concerne la classe d'entrée utilisateur, jetez un oeil à cette question about how to unit test console based app

+0

merci. J'ai créé une classe séparée pour les deux. Je vais créer un objet fantaisie pour le tester. merci beaucoup :) – JJunior

Questions connexes