Question

J'écris un jeu de pong simple C # et XNA 4.0 pour apprendre les tests unitaires. Les outils utilisés sont TestDriven.NET et NUnit, toutes les nouvelles versions. Le problème est, si je teste le code avec VS2010 débogueur interne, tout fonctionne très bien, mais quand je l'utilise « Exécuter test (s) » dans le menu, les bobines d'arrêt d'application avec l'erreur:

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

Il arrête lorsque la première textre va charger. Que se passe-t-il?

Si vous voulez vérifier le code Empruntez, téléchargez ici http://www.mediafire.com/ ? qwnkmyqheum

Était-ce utile?

La solution

La question évidente est ici ce que le répertoire de travail est, quand TD.NET exécute le test. Si vos fichiers sont en C:\game1\content\* et TD.NET exécute les tests tout en opérant dans C:\TDNET (ou autre), il est évident que la tentative de chargement Content\Whatever.jpg va essayer de C:\TDNET\Content\Whatever.jpg ouvert, qui n'existe pas. La solution de simple serait de définir un chemin absolu pour vos fichiers de contenu (si seulement temporairement) pour vérifier que c'est le problème.

L'autre question est, quelle version de TestDriven.net utilisez-vous? Leurs notes de version de 2.7 disent ceci:

966: Problèmes avec les tests XNA (travail sur les questions de répertoire)

Voir ici et pour contourner le problème.

Les premiers liens de site à la seconde, qui offre cette solution de contournement:

Etape 1.

Télécharger AssemblyUtilities.zip déballer dans votre projet et l'ajouter à votre solution.

Étape 2.

Pour tous les tests ad hoc que vous souhaitez exécuter, utiliser la commande:

Testdriven.NET.AssemblyUtilities.SetEntryAssembly();

Il doit être appelé avant que le contenu chargement, comme dans la première ligne.

Un exemple d'un test ad hoc peut être vu ici:

public static void myAdHocTest()

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

Étape 3.

Exécutez les tests ad hoc comme normale, par mettre l'accent circonflexe dans le test, Cliquez avec le bouton droit et choisissez « test run (s) ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top