On dirait que ce serait un bon moyen de présenter certaines personnes aux tests unitaires.Comment se fait-il qu'il n'y ait pas d'équivalent C# de la fonction doctest de python?
Répondre
Bien pour une chose, le documentation for doctest parle de "sessions Python interactives". Il n'y a pas d'équivalent en C# ... alors comment la sortie serait-elle représentée? Comment feriez-vous toute la configuration nécessaire?
J'ose dire qu'une telle chose serait possible, mais personnellement je pense qu'au moins pour C#, il est plus clair d'avoir des tests unitaires comme tests unitaires, où vous avez tous les avantages du fait que vous écrivez code plutôt que des commentaires. Le code peut être vérifié pour l'exactitude syntaxique à la compilation, vous avez IntelliSense, la coloration syntaxique, prise en charge du débogueur, etc.
Si vous écrivez du code, pourquoi ne pas représenter que code? Certes, il est assez courant d'inclure un exemple de code dans la documentation XML, mais rarement sous la forme de tests - et sans l'équivalent d'une «session interactive», il faudrait une construction artificielle pour représenter la sortie sous une forme vérifiable. Je ne dis pas que c'est une mauvaise fonctionnalité dans Python - juste que c'est un que je ne crois pas mappé à C# particulièrement bien. Les langues ont leurs propres styles, et toutes les fonctionnalités du langage X n'auront pas de sens dans le langage Y.
Microsoft Roslyn arrive. Je crois que cela pourrait être une technologie habilitante pour doctest.net
..et GWT.net également.
:)
C# a plusieurs obus interactifs, l'un des meilleurs étant de Mono [C# REPL] (http://www.mono-project.com/CsharpRepl). Mais je pense que vous pourriez manquer le point de doctest. Ce n'est pas un substitut pour un test unitaire du * code * principal. Plutôt, il s'agit de tester (unitairement) la * documentation *. C'EST À DIRE. il vérifie que l'exemple de code dans la documentation fait ce qu'il dit est fait. Cet exemple de code est supposé être sous une forme qui permet de clarifier à un lecteur, pas sous la forme de tests. –
'doctest' a aussi une utilisation secondaire pour les tests généraux du code principal. Mais comme le met en garde la documentation, "remplir vos docstrings avec des cas de test obscurs fait de la mauvaise documentation", donc il recommande de faire la distinction entre ces deux objectifs. –
@Matthew: Ce n'est pas parce qu'il y a des implémentations de shells interactifs que C# possède lui-même un comportement de shell interactif défini. Je serais réticent à voir la syntaxe spécifique à l'implémentation dans les commentaires. Quant à savoir si j'ai mal compris la question: le PO a suggéré que ce serait un bon moyen de présenter quelqu'un aux tests unitaires. Je pense qu'une meilleure façon d'introduire les tests unitaires est d'écrire quelques * tests unitaires réels *. –