Pregunta

Estoy escribiendo un juego de pong simple en C# y XNA 4.0 para aprender pruebas unitarias. Las herramientas utilizadas son Testdriven.net y Nunit, todas las versiones más recientes. El problema es que, si pruebo el código con el depurador interno VS2010, todo funciona bien, pero cuando uso "Ejecutar pruebas" desde el menú, la aplicación se ahoga con error:

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

Entonces se detiene cuando se cargará el primer Textre. ¿Que esta pasando?

Si desea verificar el código, descargue aquí http://www.mediafire.com/?qwnkmyqheum

¿Fue útil?

Solución

La pregunta obvia aquí es cuál es el directorio de trabajo, cuando TD.NET ejecuta la prueba. Si sus archivos están en C:\game1\content\*, y TD.NET ejecuta las pruebas mientras opera en C:\TDNET (o lo que sea), entonces obviamente tratando de cargar Content\Whatever.jpg va a intentar abrir C:\TDNET\Content\Whatever.jpg, que no existe. La solución simple sería establecer una ruta absoluta para sus archivos de contenido (aunque solo sea temporalmente) para verificar que este es el problema.

La otra pregunta es, ¿qué versión de Testdriven.net está utilizando? Sus notas de lanzamiento de 2.7 dicen esto:

966: Problemas con pruebas XNA (problemas de directorio de trabajo)

Ver aquí y aquí para solución alternativa.

El primer sitio enlaza al segundo, que ofrece esta solución:

Paso 1.

Descargar Assemblyleutilities.zip y desempaquete su proyecto y agréguelo a su solución.

Paso 2.

Para cada prueba ad hoc que desea ejecutar, use el comando:

Testdriven.NET.AssemblyUtilities.SetEntryAssembly();

Esto debe llamarse antes de la carga de contenido, como en la primera línea.

Se puede ver un ejemplo de una prueba ad hoc aquí:

public static void myAdHocTest()

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

Paso 3.

Ejecute las pruebas ad hoc como lo normal, colocando el careto en la prueba, haga clic con el botón derecho y elija "Ejecutar pruebas (s)".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top