8
votes

Aide du test unitaire. Comment tester une sortie de message à la console?

Je suis un débutant à des tests unitaires. Comment vérifier la sortie de la console? J'ai xxx

} xxx

Comment dois-je tester correctement cela? Merci pour tous les indicateurs. À votre santé, ~ ck


0 commentaires

4 Réponses :


0
votes

Ce que vous ne feriez pas du tout ce que vous feriez.

Dans votre test, vous vérifiez généralement l'état de l'objet, avec quelque chose comme: xxx

en fonction sur la façon dont votre cadre choisi fonctionne. Donc, vous devrez changer votre approche, en général, pour vous conformer à ce modèle.


0 commentaires

4
votes

Vous n'avez pas besoin de tester la routine "console.write" parce que vous devez supposer que cela fonctionne - ce n'est pas votre code, alors pourquoi voulez-vous le tester. Vous devez tester si vous produisez une chaîne correcte transmise à la "console.write"

en d'autres termes, au lieu de: xxx

vous pouviez faire: xxx

puis dans le boîtier de test: xxx

espère que cela aide. Regades Simon


3 commentaires

Que Assert ne teste que la méthode ProductionXXCircle (), et non que la méthode de tirage au sort a été appelée.


En effet, mais que voulez-vous tester? Si la console.writeline est-elle correctement émettant des chaînes à la console? Vous ne devez pas tester cela, car la console.writeline n'est pas votre code. Cela fait partie du cadre


Oui, le code d'origine tente d'essayer d'effectuer un test assez vide - appelant s.drawxxshape (); puis vérifiez que la méthode drawxxshape a été appelée. Mais au moins cela commence à commencer à tester.



14
votes

La réponse littérale serait que vous utiliseriez console.setout avant d'appeler la classe sous test sur Direct stdout dans une mémoire Mémoramatre ou similaire, dont le contenu vous pouvez inspecter ultérieurement. .

La meilleure réponse serait d'utiliser un cadre moqueur, comme Rhino Mocks pour créer une instance de béton de votre classe abstraite, avec un ensemble d'attentes que la méthode drawxxshape serait appelée.


0 commentaires

0
votes

Je suppose que certains autres tests testent les capacités de dessin - Si vous souhaitez maintenant tester que vos classes écrivent quelque chose en particulier à la console, vous devez abstraire l'idée d'écrire à la console.

Créer une interface avec une méthode writeine ​​() en elle et injecter des instances qui implémentent cette interface dans XXShapes. Vos tests peuvent injecter des simulacres ou des talons qui peuvent capturer les chaînes écrites et tester leur contenu dans les tests.


0 commentaires