2014-11-27 9 views
5

Ho un server TeamCity configurato per creare più soluzioni e quindi eseguire i test delle unità in essi utilizzando il NUnit Test Runner.Ho dei test unitari che passano in NUnit GUI e Resharper, ma falliscono quando Team City li esegue

Questo ha funzionato perfettamente per diversi mesi; tuttavia, con la nostra ultima build sto incontrando il seguente errore:

SetUp method failed. SetUp : System.IO.FileLoadException : Could not load file or assembly 'log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Succede solo per un singolo TestFixture che contiene 9 prove su centinaia in tutto il sistema. I test passano tutti quando viene eseguito utilizzando ReSharper o la GUI NUnit.

Il pacchetto Nuget fa correttamente riferimento sia al progetto in fase di test sia al progetto di test stesso. Non sono necessari reindirizzamenti dell'associazione di runtime necessari poiché è stata installata solo una versione di Log4Net.

Qualcun altro ha avuto un problema simile che hanno risolto o qualche idea su quale potrebbe essere il problema? Perché dovrebbe funzionare localmente e non sul server, soprattutto considerando gli stessi test passati in precedenza.

Le versioni di NUnit sia sul mio computer locale che sul mio server TeamCity sono le stesse.

+0

Il messaggio di errore indica che si ha la versione errata di log4net, hai controllato che quella parte sia corretta? –

+0

Sì, certo. Come ho detto, solo l'unica versione del pacchetto Nuget di Log4Net è stata installata e, se esaminata utilizzando ogni forma di riferimenti incrociati, posso pensare che sia la stessa versione. Costruisce e i test passano localmente, quindi sono abbastanza sicuro che non sia nulla di così semplice, purtroppo. – tker

risposta

4

Risponderò alla mia domanda nel caso in cui qualcun altro lo incontri.

Il problema sembra essere che il manifest di assembly di Log4Net è stato impacchettato in modo errato, o almeno in modo diverso da come ci si potrebbe aspettare.

Ciò deriva dalla versione DLL 1.2.13, ma la versione del pacchetto NuGet è 2.0.3.

Quello che abbiamo fatto è stato aggiungere un assembly vincolante come la seguente, che ha fissato il problema:

<dependentAssembly> 
    <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="2.0.3" /> 
</dependentAssembly> 

Non ho assolutamente idea del perché questo non è riuscito solo per un progetto su ~ 60 in costruzione o perché ha funzionato all'interno del mio ambiente di sviluppo VS/ReSharper Nunit runner, ma non riuscito per TeamCity!

+0

Dove esattamente hai aggiunto questa associazione? Ho lo stesso problema e ho un binding nel mio assembly.dll.config, ma finora TeamCity ignora solo quelle impostazioni. –

+0

Ci scusiamo per la risposta lenta; basta aggiungerlo a app.config in tker

Problemi correlati