2009-09-05 11 views
15

Sto cercando una soluzione di copertura del codice che funzioni con silverligt. Deve funzionare anche con msbuild perché eseguiamo tutti gli altri test di unità automaticamente nel build server.Come ottenere la copertura del codice durante il test di Silverlight

L'integrazione con Visual Studio e/o con il richiama è un vantaggio e non ho nulla contro una semplice configurazione o un puntatore a un tutorial. Di solito non modifico i file di build e sfortunatamente non ho il tempo di imparare msbuild al momento.

risposta

6

Sfortunatamente, a causa del modello di sicurezza trasparente (vale a dire tutte le applicazioni in modalità sandbox) nel runtime di Silverlight, questo non è un compito facile. La tradizionale strumentazione di copertura del codice .NET modifica l'assembly sottostante, inserendo le chiamate P/Invoke negli strumenti di raccolta della copertura.

Come risultato, strumenti come lo strumento di strumentazione per la copertura del codice di Visual Studio 2008 non funzionano con Silverlight.

Per ottenere questo risultato in Silverlight, è necessario progettare un programma di strumentazione personalizzato e un modo per raccogliere e riportare tali dati.

Nel team Silverlight abbiamo sviluppato una soluzione parziale che potrebbe abilitare questa funzionalità per alcune persone, ma non è pronta per il rilascio. Cercalo un giorno nel Silverlight Toolkit, possibilmente.

Scusa per oggi che non conosco una risposta.

0

Secondo NCover FAQ può coprire silverlight:

[http://docs.ncover.com/ref/3-0/frequently-asked-questions/#q05][1]

Finora non ho trovato alcuna informazione se che in realtà funziona per esempio per le librerie di classe Silverlight. Strano che se ncover funziona non ci sono informazioni (post sul blog, ecc.) A riguardo. Tutti utilizzano il percorso "Crea libreria .NET standard e file di collegamento per ottenere il percorso dei dati di copertura" durante il test del codice Silverlight?

Quando si tratta di altre soluzioni (anche commerciali) il mio googling non ha prodotto alcun risultato.

1

La risposta a questo punto è No (se Jeff Wilcox dice no, è no ;-)).

ho chiesto NCover supporta questa domanda un po 'indietro (about their FAQ re Silverlight):

... Sto usando Silverlight 2.0 e per quanto ne so è possibile eseguire solo nel browser. Quindi stai parlando di SL3 o mi sei perso qualcosa?

Credo che SL3 sarà RTMed presto. Se eseguo l'aggiornamento, la mia applicazione sarà in grado di funzionare automaticamente fuori dal browser (e quindi usare NCover) o dovrò cambiarla per farlo?

E questa è la risposta che ho ricevuto:

La FAQ è accurato così com'è, però la formulazione lo rende un po 'confuso. Ciò che si intende per l'argomento delle domande frequenti è che NCover non supporta il codice Silverlight (v1 o v2 o v3) quando si utilizza l'argomento // iis, perché viene eseguito sul proprio CLR.

Tuttavia, le classi code-behind e di supporto di un'applicazione Silverlight (v1 o v2 o v3) sono C#/VB validi, quindi è possibile scrivere test unitari contro quella parte dell'app ed eseguire tali test con NUnit/MSTest/Gallio/xUnit/etc e otterrai la copertura di quella porzione.

Non abbiamo ancora studiato se NCover può raccogliere copertura su Silverlight v3 quando viene eseguito all'esterno del browser, ma mi aspetto che non saremo in grado di farlo. Tuttavia, una volta accertati, ne faremo una nota nella documentazione.

Ho ritenuto che in realtà le app Silverlight non siano supportate: è necessario "Creare una libreria .NET standard e collegare i file in essa per ottenere i dati di copertura".

0

Ho chiesto questo supporto NCover.

La mia domanda era:

consente di dire che creo un silverlight classe biblioteca (Project -> New Project ...) da Visual Studio. In questo libreria di classi ho diverse classi e ho utilizzare il modello di Silverlight NUnit per progetto che contiene i test di unità per mia libreria di classi Silverlight:

http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx

Sono in grado di eseguire unit test proprio bene (anche nel server di build, siamo utilizzando msbuild e TFS) ma non posso ottenere i dati di copertura di codice per loro utilizzando le opzioni di copertura di codice standard di che sono disponibili in Visual Studio.

NCover può visualizzare la copertura del codice per le mie librerie di classi silverlight?

risposta che ho ricevuto:

Finché si sta testando le librerie di classi con NUnit si dovrebbe essere in grado di coprire utilizzando NCover. Se li provi tramite un browser Web utilizzando uno strumento come Selenium, , non sarai in grado di ottenere la copertura.

Ora mi chiedo se qualcuno nel team Silverlight ha provato a utilizzare NCover + NUnit? Ovviamente MS ha il proprio framework di test unitario quindi, nel "senso degli affari", non sarebbe così bello :) Ma che ne dici di testare solo se funziona?

2

Seguire la seguente procedura e ottenere i risultati della copertura del codice;

-Aggiunta di un nuovo progetto di prova alla soluzione
-Rimuovere tutte le classi esistenti (test database, test ordinato ecc.) In modo da rimanere con la classe di test dell'unità (UnitTest1).
-Rimuovi tutti i commenti inutili e il codice approssimativo dalla classe di test in modo che rimanga solo con un metodo di prova (nessun commento, nemmeno il TestContext)
-Aggiunta di un riferimento alle versioni silverlight di "System.dll", "System.Windows.dll" nel progetto di test. (di solito si trova in "C: \ Programmi \ Microsoft SDK \ Silverlight \ v2.0 \ Reference Assemblies \" (rimuove il riferimento esistente al sistema.dll se è necessario in primo luogo)
-Aggiungere un riferimento al progetto in prova
-È ora possibile scrivere test contro il modello a oggetti (classi standard)

Cheers,

Rif: http://weblogs.asp.net/rosherove/archive/2008/12/27/unit-testing-in-silverlight-land-with-typemock-isolator.aspx

+0

Sono riuscito a farlo funzionare facendo in modo di fare riferimento alle dll di sistema sdk silverlight 4.0 (System.dll, System.Core.dll, System.Windows.dll) in opposizione a .Net Assemblies. [Ecco un post sul blog] (http://nileshgule.blogspot.com/2011/05/unit-test-viewmodel.html) che afferma anche questo. – leogdion

1

Per chiarire i post precedenti, NCover può SOLO riguardare qualsiasi processo .NET. Non gestisce ancora il Silverlight CLR. Nei casi presentati sopra, un utente ha chiesto informazioni su un framework di test .NET che ha attivato i test .NET eseguiti contro la sua applicazione Silverlight. Tutto ciò che è .NET (ad esempio, il framework di test) verrà trattato in questo scenario. Il codice Silverlight NON sarà coperto.

Problemi correlati