Frage

Ich schreibe ein einfaches Pong -Spiel in C# und XNA 4.0, um Unit -Tests zu lernen. Die verwendeten Tools sind testDriven.net und Nunit, alle neuesten Versionen. Das Problem ist, wenn ich den Code mit internem Debugger von VS2010 teste, ist alles in Ordnung, aber wenn ich "Test (en)" aus dem Menü verwende, erstickt die Anwendung mit Fehler:

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...)

Es hört also auf, wenn das erste Textre geladen wird. Was ist los?

Wenn Sie den Code überprüfen möchten, laden Sie ihn hier herunter http://www.mediafire.com/?qwnkmyqheum

War es hilfreich?

Lösung

Die offensichtliche Frage ist hier, was das Arbeitsverzeichnis ist, wenn TD.NET den Test ausführt. Wenn Ihre Dateien in sind C:\game1\content\*, und td.net führt die Tests aus, während sie in Betrieb in Betrieb sind C:\TDNET (oder was auch immer), dann offensichtlich versuchen zu laden Content\Whatever.jpg wird versuchen, sich zu öffnen C:\TDNET\Content\Whatever.jpg, was nicht existiert. Die einfache Problemumgehung wäre, einen absoluten Pfad für Ihre Inhaltsdateien (wenn auch nur vorübergehend) festzulegen, um zu überprüfen, ob dies das Problem ist.

Die andere Frage ist, welche Version von testDriven.net verwenden Sie? Ihre Versionshinweise von 2.7 sagen Folgendes:

966: Probleme mit XNA -Tests (Arbeitsverzeichnisprobleme)

Sehen hier und hier für Problemumgehungen.

Die erste Site links zu der zweiten, die diese Problemumgehung anbietet:

Schritt 1.

Download Assemblyutilities.zip Und packen Sie es in Ihr Projekt aus und fügen Sie es Ihrer Lösung hinzu.

Schritt 2.

Verwenden Sie für jeden Ad -hoc -Test, den Sie ausführen möchten, den Befehl:

Testdriven.NET.AssemblyUtilities.SetEntryAssembly();

Dies muss vor dem Laden des Inhalts aufgerufen werden, z. B. in der ersten Zeile.

Ein Beispiel für einen Ad -hoc -Test ist hier zu sehen:

public static void myAdHocTest()

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

Schritt 3.

Führen Sie die Ad-hoc-Tests wie gewohnt durch, indem Sie die Pflege in den Test stellen, mit der rechten Maustaste klicken und „TEST (S) ausführen“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top