Domanda

Tutto funziona bene quando la classe unit test fa parte del progetto principale (TestAccount).

Ogni articolo che ho letto sui test unitari raccomanda di mettere i test in un progetto separato, quindi io ...

  • ha aggiunto un altro progetto (TestAccount.UnitTests) alla soluzione
  • spostato la classe unit test (AccountTests.vb) in TestAccount.UnitTests
  • e aggiunto un riferimento in TestAccount.UnitTests a TestAccount (copia local = true)

La soluzione viene compilata senza alcun avviso. Tuttavia, nUnit non può accedere al progetto principale e fornisce il seguente errore per ogni test:

  

System.IO.FileNotFoundException: impossibile caricare il file o l'assembly 'TestAccount, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' o una delle sue dipendenze. Il sistema non trova il file specificato.

Cosa sto sbagliando?

(Avevo problemi simili con nunit.framework.dll fino a quando non l'ho aggiunto al GAC)

screenshot di Solution Explorer http://img440.imageshack.us/img440/4862 /nunitsolutionexploreree3.jpg

Visual Studio 2005
.NET 2.0
nUnit 2.4.8 (versione .NET 2.0)

[Modifica] Ho questo problema solo quando eseguo nUnit da Visual Studio (come comando esterno). Se carico la console nUnit in modo indipendente, funziona perfettamente.

[Modifica] Omar: sì, ho il riferimento all'altro progetto. Ecco uno screenshot del mio esploratore di soluzioni

Penso che dovrei semplicemente eseguire la console nUnit separatamente (anziché tramite gli strumenti esterni di VS).

È stato utile?

Soluzione

Ho trovato un segnalazione di bug che dice che Visual Studio espande erroneamente le macro TargetPath e TargetDir. Si espandono nella directory obj \, non bin \

[Aggiornamento] Il problema / soluzione è attualmente discusso nel Supporto di Visual Studio sezione della documentazione. Dal momento che le macro "Target" puntano a obj \, non è possibile utilizzarle immediatamente. Ho finito per usare la seguente espressione nel campo Argomenti:

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)

Altri suggerimenti

Potrebbe sembrare sciocco, ma vado per l'ovvio, hai dato al tuo progetto di prova un riferimento all'altro progetto?

Altri problemi comuni a questo tipo di problema sono l'uso di classi interne a cui non è possibile accedere da un altro progetto / spazio dei nomi.

Assicurarsi inoltre che il percorso di output dell'assembly corrisponda a quanto impostato nella configurazione di NUnit. Ho la stessa configurazione ma non devo impostare 'copy local = true'

Il problema è che non trova l'applicazione stessa o una delle dipendenze dell'applicazione? Potresti provare a utilizzare FileMon o Fusion Log Viewer per vedere cosa non funziona esattamente. È possibile che il problema non sia nel trovare l'app stessa, ma nel trovare un'altra dipendenza. Assicurarsi che tutte le dipendenze abbiano Copia locale impostato su True.

Come si avvia esattamente la GUI di NUnit in VisualStudio? Se stai impostando " Avvia programma esterno " sotto le proprietà del progetto, ti dà la possibilità di specificare la directory di lavoro. Potrebbe essere necessario modificarlo nella posizione di compilazione della DLL di test.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top