NUnit non esegue il codice di Visual Studio 2010


98

Sto cercando di caricare un dll beta di Visual Studio 2010 nella GUI di NUnit. Ottengo un errore popup.

Questo assembly viene creato da un runtime più recente del runtime attualmente caricato e non può essere caricato. È possibile che si stia tentando di caricare una build di assembly con una versione successiva di CLR rispetto alla versione in cui NUnit è attualmente in esecuzione.

Come posso forzare l'esecuzione di un eseguibile con .NET 4?


Questa domanda si riferisce effettivamente al codice VS 2010 o .NET 4? - Sto cercando uno strumento che mi consenta di eseguire i test NUNIT su Visual Studio 2010 e questa domanda era fuorviante.
Nicolas Irisarri

@Nicolas - si riferisce a .NET 4.0.
Daniel A. White

Risposte:


132

Ho scaricato il sorgente NUnit 2.5 e ho aperto la soluzione VS2008 nella versione beta di VS2010. Una volta terminata la conversione, ho aperto tutti i progetti e ho modificato l'impostazione del framework di destinazione per tutti i progetti in ".NET Framework 4.0". Ho quindi creato la soluzione senza errori. Ora posso utilizzare l'app GUI NUnit per eseguire test creati per .NET 4.0. Non ho eseguito test esaustivi di questa build, quindi potrebbero esserci problemi, ma per i miei scopi funziona bene.

Aggiornamento: non è necessario ricostruire NUnit. Ho scoperto che se aggiungi quanto segue al file di configurazione di NUnit pertinente, puoi eseguire una dll di prova creata per .NET 4.0.

In <configuration> aggiungi:

<startup>
  <supportedRuntime version="v4.0.30319" />
</startup>

e in <runtime> aggiungi:

<loadFromRemoteSources enabled="true" />

3
Ok, gli aggiornamenti di configurazione lo fanno funzionare, ma ho dovuto usare version = "v4.0.21006" per il mio tag requiredRuntime.
mkmurray

4
A proposito, la posizione predefinita del file di configurazione è: C: \ Programmi \ NUnit 2.5.3 \ bin \ net-2.0 \ nunit.exe.config L'aggiunta di queste opzioni alla configurazione ha funzionato per me.
Brad Irby

2
Impossibile farlo funzionare con l'ultimo Nunit + .net4 RTM. Ho aggiunto le voci suggerite a nunit-console.exe.config ma ottengo: System.ArgumentException: Il framework net-4.0 non è disponibile Provato con le versioni precedenti + v4.0.30319 Sto eseguendo 2008 R2 x64
Andreas Öhlund

1
Per il runner della console, modificare le configurazioni come accennato, ma utilizzando la v4.0.30319 per la versione RTM di .NET 4.0. Inoltre, eseguilo con questo argomento della riga di comando: /framework=4.0.30319
Lance Fisher

1
Ho avuto fortuna utilizzando l'opzione della riga di comando /framework:net-4.0.30319 invece di modificare la configurazione. Questo è stato utile in modo da poter controllare quali applicazioni utilizzavano il CLR 4.0 e quali no.
Kevin Crowell

25

Con il rilascio di .NET 4, ho usato

<supportedRuntime version="v4.0.30319" />

in NUnit 2.5.4 exe.config invece di requiredRuntime, e il tag loadFromRemoteResources come mostrato sopra e tutto ha funzionato bene. Grazie!


17

Non devi modificare alcun file

basta aprire questo file e tutto funzionerà perfettamente

C: \ Programmi (x86) \ NUnit 2.5.10 \ bin \ net-2.0 \ nunit-x86.exe


Grazie - ha risolto il mio caso. Devo usare la versione x86 di nunit per gli unit test compilati x86. Gli avvisi sulla versione di CLR erano una falsa pista. Utilizzo di nunit 2.5.10.
Nigel Touch

Lo stesso qui, in qualche modo deve usare la versione x86
gavin

12

In NUnit 2.5.5 è possibile specificare nella riga di comando l'opzione /framework=net-4.0 ed è compatibile con i nuovi assembly generati con il rilascio dell'ultimo VS2010.


3
Non sono mai riuscito a farlo funzionare. Ho visto persone usare /framework:net-4.0.30319 e ogni sorta di altre variazioni. Sarebbe bello se includessero le opzioni effettive nei documenti del sito.
Jason Short

2
@ Jason Sembra che funzioni solo sulla versione console. La versione GUI non ha questa opzione.
Roman Starkov

+1 per aver detto che funziona a partire dalla versione 2.5.5! Avevo NUnit che lanciava ArgumentExceptions e NullReferenceExceptions su una delle mie macchine e si è scoperto che era a causa della versione 2.5.0.
realMarkusSchmidt

2

La soluzione proposta ha funzionato alla grande per far funzionare NUnit. Sfortunatamente, quando sono arrivato alla fase di copertura del codice, NCover ha iniziato a darmi:

Processo profilato terminato. Connessione al profiler non stabilita.

La migliore soluzione che ho trovato è stata quella di utilizzare la versione "-x86" di NUnit con NCover:

NCover.Console.exe nunit-console-x86.exe --parametri aggiuntivi--

Funziona adesso.


1
Grazie per questo, stavo riscontrando lo stesso problema, la tua correzione lo ha risolto!
CubanX

2

Per trovare la tua versione .net 4 da Visual [C # 2010 Express, o qualsiasi altra cosa] vai su "Informazioni su" dell'applicazione Visual sotto la voce Guida del menu. Dovrebbe apparire come la versione sotto la riga di Microsoft .NET Framework in alto a destra nella finestra.


1

Mi sono imbattuto nello stesso messaggio di errore durante l'esecuzione di NUnit 2.4.8. Dato che non avevo aggiornato da tempo, ho installato l'attuale NUnit (v2.5.9) e ho scoperto che ora supporta gli assembly VS2010. Quindi, se hai riscontrato di nuovo questo errore, controlla la tua versione di NUnit : a partire da dicembre 2010 (o giù di lì) l' unica cosa che devi fare è aggiornare NUnit.


Sto eseguendo NUnit 2.5.9 scaricato il 15/03/2011 e questo problema non andrà via per me. Anche se provo la soluzione proposta
DrLazer

1

A partire da NUnit 2.5.10 è possibile abilitare il supporto di Visual Studio nel runner della GUI:

Strumenti-> Impostazioni-> Supporto IDE

Dopodiché sono stato in grado di collegarmi con successo al processo nunit-agent.exe che esegue l'assembly in un dominio app .NET 4.0


0

Se si verifica questo problema dopo l'aggiornamento a nunit 2.5.5, sarà necessario aggiornare nant all'ultima versione per me era .91 alpha.


0

Ho trovato utile iniziare da NUnit Application Template . Supporta VS C # Express, consente il debug di test e contiene NUnit precompilato per .NET 4.0. Grazie all'autore il nuovo progetto di test si prepara con un clic.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.