2010-05-03 18 views
8

Quando eseguo i miei Test unità, tutti i test passano, ma invece di "Esegui test eseguito correttamente" o qualunque sia il messaggio di esito positivo, viene visualizzato "Errore esecuzione test" nella barra piccola che indica quanti dei miei test sono passati, anche se tutti i miei test sono passati.Errori di esecuzione test con MSTest in VS2010

quando clicco sul testo, mi sono preso ad una pagina che mi dice le seguenti due cose sono accadute:

Warning: conflict during test run deployment: deployment item '[...]\Booking.Web.dll' directly or indirectly referenced by the test container [...]\Booking.Web.Tests.dll cannot be deployed to 'Booking.Web.dll' because otherwise the file '[...]\Booking.Web.dll' would override deployment item '[...]\Booking.Web.dll' directly or indirectly referenced by '[...]\Booking.Web.Tests.dll'

Error: Cannot initialize the ASP.NET project 'Booking.Web' Exception was thrown: The website could not be configured correctly; getting ASP.NET proccess information failed. Requesting ' http://localhost:54131/VSEnterpriseHelper.axd ' returned an error: The remote server returned an error: (500) Internal Server Error.

Non capisco la metà di quello che sta lamentando. Come faccio a sbarazzarmi di questi errori?

(E per riferimento: Booking.Web è un progetto ASP.NET MVC 2, Booking.Web.Tests è un progetto di test, [...] è il percorso completo locale per i progetti nel mio ambiente, nella maggior parte dei casi sopra alla cartella/bin/debug/all'interno del progetto Booking.Web)

Aggiornamento: Come richiesto, ho cercato più informazioni nel Visualizzatore eventi. Ecco cosa ho trovato:

3008 A configuration error has occurred.
5/8/2010 2:26:15 AM
5/8/2010 12:26:15 AM
4ffbe9180c3d4c02adb9ac4d61dd0928
1
1
0
4484bbf4-1-129177519750954331
Full
/
D:\...\Booking.Web\
AASLOEG

1876
WebDev.WebServer40.EXE
Aasloeg\Tomas
ConfigurationErrorsException
Could not load file or assembly 'Ninject.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=79764a4ef1548af1' or one of its dependencies. Strong name signature could not be verified. The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045) at
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) at
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() at
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) at
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) at
...stack trace in absurdum.

+0

Riferimento a un progetto ASP.NET in una prova di unità è quasi sempre una cattiva idea. –

+0

OK ... Quindi come dovrei refactoring per uscire da questo? –

+5

Refferenziare il progetto ASP.NET MVC in un test di unità è una pratica comune. Altrimenti come verificherai le azioni del controller? –

risposta

9

Prima di tutto, hai attivato la copertura del codice. Puoi leggere here a riguardo. Quindi non ci sono problemi con i test unitari. Questo è un problema di copertura del codice.

Seconda cosa: questo avviso è ok, non importa.

Terza cosa - questo errore - questo è il problema chiave.

Ci possono essere diversi problemi - il più comune è che si dovrebbe respingere più assiemi. Per scoprire cosa deve essere caricato esattamente devi andare a Event Viewer e guardare a Registri di Windows-> Applicazione

+0

Quindi, ha funzionato? –

+0

Ho trovato un errore con Ninject.Web.Mvc (per il quale ho scaricato l'origine e costruito contro Ninject 2 e ASP.NET MVC 2 dlls ...) ma non sono stato in grado di eliminare l'errore, dal momento che Non riesco a capire perché il caricamento della DLL non funziona correttamente.Aggiornerò il mio post con le informazioni che trovo nel Visualizzatore eventi. Inoltre, come dici tu, ho attivato la copertura del codice, ma quale parte di questo stai dicendo è influenzata da questo? –

+0

Bene, è possibile disattivare la copertura del codice. Ma se ne hai bisogno, dovresti capire perché questo problema appare. In realtà se li hai costruiti da solo, li hai firmati? 'Ninject.Web.Mvc, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 79764a4ef1548af1 - significa che cerca l'assembly firmato. Capisco - questo sembra davvero strano che tu possa eseguire il sito web ma la copertura del codice per qualche motivo che nessuno può capire richiede più assembly da includere nell'applicazione. –

4

Ho avuto lo stesso errore relativo a MS-Test lamentando che una DLL poteva "sovrascrivere l'elemento di distribuzione blah.dll".

Questo accadeva perché ero in esecuzione MS-Test per più DLL in una sola volta in questo modo:

mstest.exe /testcontainer:Tests.web.dll /testcontainer:Tests.svcs.dll /testcontainer:Tests.core.dll 

Quando MS-test è stato eseguito questo, ha cercato di prendere tutto l'output DLL dai test e luogo loro in fuori /Out directory della corsa di prova. Nel mio caso, Tests.svcs.dll e Tests.core.dll sia fatto riferimento lo stesso assieme (Core.dll) e quindi cercato di copiare tale DLL allo stesso punto due volte (provocando la avvertimento).

Per risolvere questo, ho separato il test viene eseguito per ogni gruppo che ha dato ogni prova il proprio cartella /Out per l'uscita DLL

mstest.exe /testcontainer:Tests.web.dll 

mstest.exe /testcontainer:Tests.svcs.dll 

mstest.exe /testcontainer:Tests.core.dll 
+0

Non è sempre possibile farlo. Nel mio caso sto eseguendo il test nel server CI e devo eseguirli tutti insieme per generare un file con un singolo risultato –

+0

Cosa CI stai usando? Ho eseguito tutti i miei test in Hudson/Jenkins e il plugin che utilizziamo per visualizzare i risultati è in grado di unire più file di risultati. Diamo solo un jolly così: /TestResults/*.trx –

+0

Sto usando Jenkins. Quale plugin usi per elaborare i risultati del trx? –

Problemi correlati