Sembra che sarebbe un buon modo per introdurre alcune persone ai test unitari.Come mai non esiste un equivalente C# della funzione doctest di python?
risposta
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.
Microsoft Roslyn sta arrivando. Credo che questa potrebbe essere una tecnologia abilitante per doctest.net
..e GWT.net anche.
:)
- 1. Clojure equivalente al doctest Python?
- 2. Esiste un equivalente della funzione di intervallo Python in MATLAB?
- 3. Esiste un equivalente Python della funzione conv2 di MATLAB?
- 4. Esiste un equivalente in C++ della funzione explode() di PHP?
- 5. esiste un equivalente della funzione egen di Stata?
- 6. Esiste un equivalente a urllib di python in c/C++?
- 7. Equivalente C della funzione "setw"
- 8. Equivalente Python della funzione "ismember" di MATLAB
- 9. Esiste un equivalente Java della funzione http_build_query di PHP?
- 10. Equivalente di Python della funzione perl vec()
- 11. Esiste un equivalente Elixir della funzione `try` di Rails?
- 12. Esiste un equivalente alla funzione MATLAB bsxfun in python?
- 13. Esiste un Python equivalente alla funzione smooth.spline in R
- 14. C++ equivalente alla funzione len() di Python?
- 15. Esiste un equivalente di str_replace in C++?
- 16. Esiste un equivalente Python simboli di Ruby?
- 17. Esiste un Python equivalente alla funzione PHP htmlspecialchars()?
- 18. Come eseguire doctest (in Python) in JavaScript?
- 19. Esiste un equivalente Python per C++ "multiset <int>"?
- 20. Come usare doctest con una funzione decorata in python?
- 21. Esiste un equivalente Cake per Python?
- 22. Esiste un equivalente di Groovy in C#?
- 23. Esiste un equivalente C++ di una NullPointerException
- 24. In Java esiste un equivalente della classe Convert da C#?
- 25. Esiste un equivalente standard getch() in C++?
- 26. Esiste un equivalente C# di array_key_exists di PHP?
- 27. Esiste un Python equivalente a HighLine?
- 28. Esiste un equivalente C/C++ di eval ("function (arg1, arg2)")?
- 29. Esiste un equivalente Rake in Python?
- 30. Esiste un equivalente di getch() da C++ in Java?
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. –
'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. –
@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 *. –