Domanda

Sto scrivendo un semplice gioco pong in C # e XNA 4.0 per imparare test di unità. Gli strumenti utilizzati sono TestDriven.NET e NUnit, tutte le versioni più recenti. Il problema è che, se provo il codice con VS2010 debugger interno, tutto funziona bene, ma quando uso "giro di prova (s)" dal menù, le induttanze di applicazione con errore:

Test 'WindowsGame1.Game1.TestGameMenu' failed: Microsoft.Xna.Framework.Content.ContentLoadException : Error loading "SpaceBackground". File not found.
----> System.IO.FileNotFoundException : Error loading "Content\SpaceBackground.xnb". File not found.
(some more below...)

Così si ferma quando il primo textre sta per essere caricato. Cosa sta succedendo?

Se si desidera controllare il codice out, scaricarlo qui http://www.mediafire.com/ ? qwnkmyqheum

È stato utile?

Soluzione

La domanda ovvia qui è che cosa la directory di lavoro è, quando TD.NET esegue il test. Se i file sono in C:\game1\content\*, e TD.NET esegue i test durante il funzionamento in C:\TDNET (o qualsiasi altra cosa), allora ovviamente cercando di carico Content\Whatever.jpg sta per cercare di C:\TDNET\Content\Whatever.jpg aperto, che non esiste. La soluzione semplice sarebbe quella di impostare un percorso assoluto per i file di contenuto (anche se solo temporaneamente) per verificare che questo è il problema.

L'altra domanda è: quale versione di TestDriven.net stai usando? Le loro note di rilascio da 2,7 dicono questo:

966: Problemi con i test di XNA (che lavorano problemi di directory)

Vedere qui e qui per risolvere il problema.

I primi collegamenti di sito per la seconda, che offre questa soluzione:

Passaggio 1.

AssemblyUtilities.zip decomprimere nel progetto e aggiungerlo al la vostra soluzione.

Passaggio 2.

Per ogni test ad hoc che si desidera eseguire, utilizzare il comando:

Testdriven.NET.AssemblyUtilities.SetEntryAssembly();

Questo deve essere chiamato prima il contenuto caricamento, ad esempio nella prima riga.

Un esempio di un test ad hoc può essere visto qui:

public static void myAdHocTest()

{
    Testdriven.NET.AssemblyUtilities.SetEntryAssembly();
    //Do your testing here
}

Passo 3.

eseguire i test ad hoc, come normale, per mettendo il cursore nella prova, fare clic destro e scegliere “Test run (s)”.

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