Stavo cercando altri modi per testare le applicazioni ASP.NET MVC e ho incontrato Steve Sanderson MvcIntegrationTestFramework. L'approccio sembra piuttosto promettente, ma mi chiedevo se qualcuno avesse qualche esperienza reale da condividere.Qualcuno ha usato M67IntegrationTestFramework di Steve Sanderson?
risposta
Sto ottenendo ottimi risultati. Non m'importa di quello che dicono gli altri qui sulla necessità di testare le viste, non appena si aggiunge la prima linea di codice a una vista, anche se il codice è strettamente correlato alla presentazione, si introduce un potenziale di errori per il quale sarebbe una buona idea scrivere test automatici. Il mio interesse principale è solo quello di catturare il maggior numero possibile di errori/schermo bianco e schermo giallo. Per farlo ho utilizzato il frammento dal post introduttivo di Steven per garantire che la pagina visualizzata correttamente senza gettare eccezioni:
Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html"));
Le piccole insidie che vedo con questo quadro potrebbe essere:
- Se il tuo sito web sta eseguendo un collegamento di modelli piuttosto complesso tra le viste e i metodi di azione, potresti trovarti a creare alcuni NameValueCollections piuttosto grandi come in questo esempio (un metodo di azione che accetta un oggetto modello di vista LogonModel), poiché Non vediamo alcun modo di passare qualsiasi tipo di oggetto del modello di vista complesso nei tuoi metodi di azione usando questo framework:
var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection { {"UserName","myName"}, {"Password", "myPassword"}, {"returnUrl", "/home/myActionMethod"} });
- Esecuzione browsingSession.ProcessRequest ("URL") crea un'applicazione host/contesto che in realtà esegue il codice web che si sta verificando utilizzando la configurazione nel progetto che si sta testando. Ciò significa che i test funzionano un po 'lentamente e potrebbero eventualmente modificare i dati reali, dal momento che non vedo un modo semplice e veloce per sostituire i repository di accesso ai dati nel tuo progetto web sotto test con versioni false utilizzando qualsiasi funzione integrata in questo quadro di prova. In altre parole, probabilmente dovresti eseguire il rollover utilizzando alcuni metodi basati su web.config.
Follow up - Consiglio vivamente di passare a MVC3 e utilizzare RazorGenerator. È possibile eseguire contemporaneamente MVC2 e MVC3, migrando singole pagine Web alla volta, che ho trovato che funzionano senza problemi. Sebbene il framework di Steve Sanderson funzioni bene all'interno dei limiti di MVC2, abbiamo trovato estremamente difficile gestire le modifiche ai percorsi dei file codificati che erano necessari quando si utilizzava il framework di test sulle nostre macchine di sviluppo rispetto alla nostra C.I. server. Questo problema non esiste con RazorGenerator + MVC3. –
Grazie per il seguito! Puoi spiegare in breve come RazorGenerator ti ha aiutato a sostituire MvcIntegrationTestFramework per i tuoi test di integrazione? In che modo la precompilazione delle tue visualizzazioni Razor può aiutarti? Forse lo hai scritto sul blog :-) – Oliver
Non ho usato questo framework. Ma sulla base della mia esperienza di lettura del suo libro - Pro ASP.NET MVC Framework e di un altro framework di validazione xVal che ha sviluppato, direi "LUI È GRANDE".
Mi piace molto anche il suo libro. In effetti ho una copia accanto a me in questo momento. – Maurice
Sperimentato un po 'e potrebbe essere molto utile in alcune situazioni. General thumbs up e se ho visto ulteriori lavori su di esso vorrei utilizzare su un progetto futuro.
Non procedere come già impostato WatIn e aver cura di alcune cose che non vorrei affrontare di nuovo in questo contesto. Per esempio. autenticazione tramite una finestra di dialogo, che probabilmente richiederebbe un cambio di codice.
Dopo aver letto ardave's answer qualche tempo fa, ci siamo andati di provarlo per noi stessi per la nostra nuova applicazione basata Orchard Marinas.info.
Prima di tutto, consiglio a chiunque di iniziare da un fork di this version in quanto è ancora più semplice da configurare rispetto all'originale.
Per qualsiasi "normale" app MVC3 funziona semplicemente. Sfortunatamente, insieme a Orchard non ha funzionato bene, almeno non con una versione non modificata del loro Global.asax.cs. Quindi siamo ancora andati su browser based testing road ma continuiamo ad usarlo per eseguire i comandi di Orchard all'interno dell'app che è abbastanza veloce.
- 1. L'helper BeginCollectionItem di Steve Sanderson non si associa correttamente
- 2. Qualcuno ha mai usato SciPy con IronPython?
- 3. Qualcuno ha usato Ant4Eclipse con Project Lombok?
- 4. Qualcuno ha usato HipHop per PHP?
- 5. Qualcuno ha usato Magma in Pharo2.0?
- 6. Qualcuno ha usato ActionChains di Webdriver (collegamento Python)?
- 7. MySQL: qualcuno ha usato il motore di archiviazione TokuDB?
- 8. Qualcuno ha usato waf per creare applicazioni Java?
- 9. C'è qualcuno che ha usato JBoss Errai nei loro progetti?
- 10. Qualcuno ha usato Lua per costruire un'applicazione web?
- 11. Qualcuno là fuori ha usato Delphi per programmare i VST?
- 12. ModelBinding with Steve Sandersons BeginCollectionItem
- 13. Qualcuno ha usato CrossKylix per lo sviluppo di una vera piattaforma?
- 14. Qualcuno ha usato Minitest :: Spec con un test funzionale di Rails?
- 15. Qualcuno ha provato con vss2git?
- 16. Qualcuno ha usato Incanter in un'app Web per pubblicare grafici statistici?
- 17. Qualcuno ha esperienza con AppScale?
- 18. Qualcuno ha provato il lino?
- 19. Qualcuno ha esperienza con Perl5i?
- 20. DxScene è "WPF per Delphi"? Qualcuno l'ha usato?
- 21. Chiunque ha mai usato il casting di PHP (non impostato)?
- 22. Qualcuno ha qualche esperienza con Hobo?
- 23. Qualcuno ha un'installazione GMP + MINGW funzionante?
- 24. Qualcuno ha un compilatore B funzionante?
- 25. Qualcuno ha adottato con successo JaikuEngine?
- 26. Qualcuno ha fatto un'analisi delle prestazioni di boost :: asio?
- 27. Qualcuno ha utilizzato ServiceLoader insieme a Guice?
- 28. Qualcuno ha esperienza con gcc LTO (C++)?
- 29. Qualcuno ha esperienza con CloudFoundry con Grails?
- 30. Qualcuno ha ottenuto processing.js lavorando in IE?
Non l'ho ancora usato ma l'idea di disaccoppiare il browser dal test di integrazione è molto allettante. –
Ma per me l'integrazione implica l'integrazione dei livelli. E il browser (in particolare javascript e ajax) è, in effetti, un livello che dovrebbe essere testato. –
Ciao James. Ciò deve essere fatto sicuramente, ma in base alla mia esperienza è difficile automatizzare e, a causa delle differenze tra i browser, è necessario farlo per alcuni di essi. Quindi questa non è una sostituzione ma un'aggiunta ai test del browser. E utile per trovare regressioni. – Maurice