2010-10-19 13 views

risposta

6

Bene, per prima cosa, lo documentation for doctest parla di "sessioni interattive Python". Non c'è un equivalente in C# ... quindi come dovrebbe essere rappresentato l'output? Come eseguiresti tutta la configurazione necessaria?

oserei dire una cosa del genere sarebbe possibile, ma personalmente penso che almeno per C#, è più chiaro per avere unit test come unità di test, dove si hanno tutti i vantaggi del fatto che si sta scrivendo codice piuttosto che commenti. Il codice può essere controllato per correttezza sintattica a tempo di compilazione, si dispone di IntelliSense, evidenziazione della sintassi, il supporto debugger ecc

Se si scrive il codice, perché non rappresentano che come codice? È normale che includa codice di esempio nella documentazione XML, ma raramente si tratta di test e, senza un equivalente di una "sessione interattiva", richiederebbe un costrutto artificiale per rappresentare l'output in una forma verificabile.

Non sto dicendo che questa sia una brutta caratteristica in Python - solo che è uno di quelli che non ritengo particolarmente adatto alle mappe in C#. Le lingue hanno i propri stili e non tutte le funzioni nella lingua X hanno un significato nel linguaggio Y.

+5

C# ha diverse shell interattive, uno dei migliori essendo [C# REPL] di Mono (http://www.mono-project.com/CsharpRepl). Ma penso che potresti perdere il punto di doctest. Non è un sostituto per unità testare il codice * principale *. Piuttosto, è un modo di (unit-) testare la * documentazione *. OSSIA verifica che il codice di esempio nella documentazione faccia esattamente quello che dice. Si suppone che questo codice di esempio sia in una forma che aiuta a chiarire a un lettore, non sotto forma di test. –

+0

'doctest' ha anche un uso secondario per il test generale del codice principale. Ma come avverte la documentazione, "riempire le tue docstring con oscuri casi di test crea una cattiva documentazione", quindi raccomanda di distinguere tra questi due scopi. –

+1

@Matthew: solo perché ci sono implementazioni di shell interattive non significa che C# abbia un comportamento di shell interattivo definito. Sarei dispiaciuto di vedere la sintassi specifica dell'implementazione nei commenti. Per quanto riguarda se ho frainteso la domanda: il PO ha suggerito che questo sarebbe stato un buon modo per introdurre qualcuno ai test unitari. Penso che un modo migliore per introdurre il test delle unità sia scrivere alcuni * test unitari effettivi *. –

1

Microsoft Roslyn sta arrivando. Credo che questa potrebbe essere una tecnologia abilitante per doctest.net

..e GWT.net anche.

:)

Problemi correlati