2011-09-07 10 views
7

Utilizzo il runner integrato TeamCity NUnit per eseguire test memorizzati nei file DLL.FileNotFoundException durante l'esecuzione di test NUnit da TeamCity

Le mie DLL si riferiscono ad altre DLL presenti nella stessa cartella.

Durante l'esecuzione di questi, ottengo un FileNotFoundException per le DLL di riferimento.

Come posso risolvere questo problema? Penso che forse il runner TC NUnit stia usando qualche altra dir come cartella principale di esecuzione delle app, e quindi impedendo il caricamento corretto dei file che risiedono in realtà vicino alla DLL di test, ma non è ancora in grado di dimostrare questa affermazione ...

Qualcun altro ha riscontrato questo comportamento?

risposta

9

OK il problema è risolto ed è davvero sciocco e imbarazzante:

ho impostato il test corridore NUnit per eseguire questi test:

**/*.Tests.dll 

Ciò significa che esso comprende prove da /bin/Debug/ e anche da altre cartelle, ad esempio obj/

In queste cartelle, ovviamente, non sono inclusi riferimenti, facendo sì che gli stessi test vengano eseguiti due volte e alcuni di questi falliscono, ovviamente!

1

I percorsi sono correlati alla creazione della directory di checkout, non a qualsiasi directory di lavoro. Se è necessario un altro percorso, utilizzare la sintassi %reference% per fare riferimento alla proprietà TeamCity con un percorso di directory. Lo fai sotto Windows? Usi TeamCity 6.5?

Se questo non aiuta, i mangimi a contattare [email protected]

+0

Attualmente sto usando 6.5, Windows, sì. So che i percorsi sono relativi, quella era solo una spiegazione logica che stavo usando per cercare di capire perché questo non funziona. Se Dll A fa riferimento a Dll B (entrambi nella stessa dir), quale motivo può causare l'avvio del programma di avvio NUnit fallito nel trovare Dll B? –

0

Nel mio caso, la DLL mancante era una libreria nativa e non poteva essere caricata perché c'era una versione errata del runtime VC installato sull'agent build. La mia soluzione era aggiungere le DLL di runtime (situate in "C: \ Programmi (x86) \ Microsoft Visual Studio 11.0 \ VC \ redist \ x86 \ Microsoft.VC110.CRT") direttamente nel progetto (build action = Content, copy to directory di output = copia sempre). Questo rende anche l'installazione più amichevole.

Spero che questo aiuti.

Problemi correlati