2012-08-24 1 views
5

Ho impostato due sessioni di test permanenti in ReSharper 7 in Visual Studio 2010/2012 - "Passing" e "Failing". Eseguo la sessione Passing ogni giorno e posso identificare rapidamente qualsiasi errore di regressione dall'ultima volta, nel qual caso trasferisco quei test in Failing, dove posso lavorarci quando ho tempo. Funziona ed è fantastico.Come posso condividere le sessioni di prova dell'unità ReSharper in una squadra?

Il problema è che non riesco a trovare un modo per esportare tali sessioni come opzione di "Solution Team-condivisa", come suggerito nella ReSharper docs per le impostazioni che si potrebbe desiderare di condividere all'interno di un team. Ovviamente, sarebbe utile essere in grado di avere altri nel tempo avvalersi della stessa struttura di sessione di test. Ma quando cambio le mie sessioni, sembra sempre che aggiorni il file 'PatientPortal.sln.DotSettings.user', non quello 'PatientPortal.sln.DotSettings'.

In ReSharper -> Opzioni -> Unit Testing, ho controllato 'Salvare e ripristinare Unit Test Sessions' ed è stato selezionato Save-To - 'Soluzione [nome] Team-condiviso'

A causa della difficoltà che Sto vivendo, ho il sospetto che le sessioni di test delle unità ReSharper non siano progettate per essere qualcosa da registrare e condividere, ma troverei produttivo farlo in questo caso, quindi qualcuno sa come fare?

risposta

1

È necessario utilizzare le categorie per questo. Se si utilizza NUnit, quindi è possibile utilizzare CategoryAttribute per contrassegnare i test o montaggi di prova con le categorie, in questo modo:

[Category("Failing")] public void MyTestProc() ... 

È possibile specificare diverse categorie per un test (basta utilizzare attribuire più volte).Successivamente andare a ReSharper | Unit Tests | Unit Tests e selezionare Group by -> Categories (o qualcosa del genere, non ricordo esattamente). Seleziona la tua categoria e premi il tasto Run selected tests dalla barra degli strumenti.

+0

Speravo di evitare di cambiare i test stessi, il che ha reso le sessioni di test interessanti per me, ma sì, penso che questa sia l'unica strada da percorrere. Non sto usando NUnit, ma TestCategory ("Failing")] funziona all'interno dello spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting. Grazie. –

1

La risposta breve è che hai ragione: le sessioni di test del programma di ricerca devono essere salvate per utente e salvate nel file .sln.DotSettings.user e i file .user non devono essere archiviati

Per la maggior parte degli scenari, non sono sicuro che abbia senso condividere in tutto il team: se sono TDDing di una certa classe, gli altri membri del team non hanno bisogno di vedere i miei test, come hanno vinto " t lavoreremo nella stessa area del codice e avremo invece le loro sessioni. Un effetto "knock on" sarà anche un sacco di abbandono (e alto rischio di conflitti) su quella parte del file delle impostazioni condivise.

Se si seleziona "Salva in" per un file di impostazioni condivise del team, l'impostazione "salva e ripristina sessioni unità di test" viene eseguita solo nel file delle impostazioni condivise. Non causerà il salvataggio delle sessioni stesse.

Non ci ho pensato troppo a lungo, ma ho il sospetto che potresti scrivere un plug-in ReShaprer che ha salvato le sessioni bloccate nelle impostazioni condivise del team. UnitTestSessionManager genera eventi quando una sessione viene creata o chiusa e l'interfaccia IUnitTestSession espone GetPersistentInfo e RestorePersistentInfo che consentono di ottenere i dati da salvare e caricare. Sarebbe quindi un caso di persistere i dati nel file delle impostazioni in momenti appropriati.

Non posso garantire che non si otterranno conflitti in questo file, però - Non so in che ordine si trovano gli elementi quando sono serializzati, e i dati sono serializzati in un formato piuttosto denso, quindi le modifiche alle sessioni potrebbero essere dolorose.

Forse un modo diverso di lavorare sarebbe meglio? Quali sono le due sessioni che ti mostrano che non avresti ottenuto semplicemente eseguendo tutti i test in una singola sessione? ReSharper ti consente di mostrare solo passaggi o test falliti. Aiuta davvero il team a essere in grado di raggruppare i test in caso di esito negativo o negativo? Forse aggiungendo categorie ai test che devi risolvere in seguito? Contrassegnali ignorati se non sono abbastanza importanti da risolvere in questo momento? Correggili adesso?

+0

Grazie per la risposta. "Quali sono le due sessioni che ti mostrano che non avresti ottenuto solo eseguendo tutti i test in una singola sessione?" Se eseguo tutti i test insieme, con quelli già distrutti accanto a quelli che passano, non vedrò facilmente se quelli che passano ora abbiano quelli regrediti. Segregandoli prima di eseguirli ti consente di vedere rapidamente se si verificano nuovi errori, che diventa difficile quando li esegui tutti insieme. Ovviamente dovrei sistemarli tutti e averne a che fare, ma ci saranno sempre un paio di problemi rotti che si conoscono e che presto si risolveranno. –