2012-03-16 21 views
6

Ho un'applicazione desktop C# (CompositUI/WinForms). Questa applicazione si connette a un servizio web utilizzando SmartClient. Il mio compito è di introdurre (eseguire il retrofit) test su questa applicazione, usando SpecFlow e White frameworks. Al fine di testare solo la GUI, ho bisogno di prendere in giro le chiamate al servizio web. La classe che si connette ad esso viene iniettata tramite Spring.net. Il mio compito è verificare che l'applicazione sia in grado di prendere in giro la chiamata del servizio web durante i test, il che significa che il mio codice di test deve avere il controllo di ciò che farà il mio simulato. Il problema: il metodo che avvia la GUI semplicemente non restituisce il controllo al thread che lo ha invocato. Di conseguenza, non possiamo controllare la GUI e i mock.Test di WinForms/CompositeUI GUI con SpecFlow, White, Spring e MS Test

quindi le domande che ho a questo punto sono:

  • è fattibile (e in tal caso - come farlo) per avviare GUI in thread separato e avere il controllo torna al thread test?

  • Quali sarebbero le altre possibilità di eseguire test GUI, che mi consentirebbero di avere il controllo dell'iniezione?

risposta

-1

essenziale per testare .net Ui la vostra intenzione di usare un set di strumenti MVVM o crearne uno in modo da poter configurare la soluzione per testare i metodi utilizzati da l'interfaccia utente. Esistono numerosi framework per .net che supportano questa funzionalità su Wikipedia.

I fondamenti alla base di tutti i test dell'interfaccia MVVM sono un framework DI/IOC, che sarà necessario selezionare.

In pratica si crea una classe ViewModel che è possibile testare. Per un esempio di test unitario con WPF - http://www.markermetro.com/2010/07/technical/mvvm-light-and-unit-testing-example/

Ora ci sono alcuni trucchi su cui riflettere. In primo luogo, .NET WinForms non avrà grandi cambiamenti con M $ (THANKS A BUNCH!) E XAML/WPF non ha alcun percorso di aggiornamento. MS $ ha indicato che gli sviluppatori dovrebbero iniziare a utilizzare i progettisti dell'interfaccia utente WPF per i progetti desktop in futuro. Il numero di framework MVVM che supportano WinForms è limitato, quindi potrebbe essere necessario eseguire il rollover tramite DI, ma dare un'occhiata alla seguente discussione StackOverflow sull'argomento.

In secondo luogo, i moduli .NET da WPF a Windows Phone all'interfaccia utente Web per problemi di implementazione Metro UI. Il team di Microsoft P & creato da Prism per xaml/WPF presenta alcuni modelli di anti in dispersione delle dipendenze (Service Locator è BAD) in base al book Mark Seemann and his Dependency Injection in .NET. Il prisma non è stato aggiornato a Metro e re-architettato, confondendo gli utenti e rendendolo parzialmente ridondante. In sostanza, il mio punto è che ottenere un framework per consentire alla vostra interfaccia utente dell'applicazione di andare avanti sarà difficile.

+0

Questo non risponde alla domanda. Non sta parlando della logica di presentazione dei test unitari, ma in realtà vuole che il test faccia clic sui pulsanti e digiti nelle caselle di testo. Come si costruisce l'ui (mvvm, MVP, code behind) è irrilevante per quel tipo di test. – Andy

+0

Anche winforms è supportato, ma non ha grandi cambiamenti. Wpf sarebbe il modo preferito per creare nuove app desktop (quelle che non stanno andando via) e xaml/winrt o win/js per le app di Windows Store. – Andy

+0

@Andy ha modificato la risposta per chiarire la tecnologia. –

Problemi correlati