2014-04-04 13 views
11

Sto migrando una soluzione di grandi dimensioni da VS 2010 a VS 2013. Abbiamo alcune migliaia di test che non vengono eseguiti quando si utilizza un file .runsettings. Il nostro precedente file delle impostazioni di test era del tipo .testsettings. La mia comprensione (dopo un googling molto frustrato) è che per utilizzare il nuovo test runner VSTest è necessario utilizzare un file .runsettings. Non sono stato in grado di trovare molta documentazione su ciò che questo file può supportare. Questa è fondamentalmente l'unica risorsa disponibile: http://msdn.microsoft.com/en-us/library/vstudio/jj635153.aspxElementi di distribuzione in .runsettings

Il nostro precedente file .testsettings aveva una sezione ampia per gli elementi di distribuzione che ora non possono essere trovati e quindi i test falliscono immediatamente. Il problema è che non riesco a scoprire se includere gli elementi di distribuzione è ancora un'opzione in un file .runsettings.

Il nuovo formato di impostazioni di prova di .runsettings supporta gli elementi di distribuzione?

risposta

7

.runsettings non supporta gli elementi di distribuzione allo stesso modo di .testsettings sfortunatamente, e io per prima cosa lo trovo molto frustrante in quanto era un modo molto pulito di distribuire le dipendenze. C'è un'impostazione ad esso relativa in .runsettings (DeploymentEnabled), ma tutto ciò sembra controllare sta eseguendo i test in una directory separata, piuttosto che nella directory di output dell'applicazione.

Dopo molti tentativi ed errori, ho finito per cambiare tutti i file .csproj nei miei progetti di prova per avere un'azione CopyIfNewer accumulo nella finestra Proprietà in Visual Studio in modo che tutte le dipendenze siano copiati nella cartella di output in modo che essere trovato durante l'esecuzione dei test.

Penso che tutto sommato abbia trascorso circa 2-3 ore aggiornando tutti i test per farli funzionare di nuovo.

I vantaggi sono molto più rapidi ora poiché non è necessario copiare tutti i file binari in una nuova directory dopo che sono stati compilati, poiché tutto viene eseguito "sul posto".

+0

Ho un problema simile qui, ma non ho potuto capire esattamente la vostra soluzione. Ho bisogno di copiare più cartelle che vorrei copiare. Queste cartelle sono su DLL correlate piuttosto che sul progetto di test stesso. Come devo procedere? Grazie –

+0

È necessario aggiungere manualmente tutto ciò che è necessario copiare nel file di progetto (ad esempio come elemento collegato) o creare un'azione personalizzata post-build di MSBuild per copiarli nella posizione in cui sono necessari. –

+0

Grazie martin. Alla fine, sono stato in grado di risolverlo, sul mio scenario, utilizzando gli attributi [DeploymentItem] e creando una classe base da estendere con i miei test. Abbiamo impiegato un po 'di tempo per calcolare i percorsi relativi giusti, ma ha funzionato bene. –

Problemi correlati