FileNotFound Исключение при использовании TestDriven.NET и NUnit - PullRequest
1 голос
/ 07 июня 2010

Я пишу простую игру в понг на C # и XNA 4.0 для изучения юнит-тестирования. Используются следующие инструменты: TestDriven.NET и NUnit, все новейшие версии. Проблема в том, что если я тестирую код с помощью внутреннего отладчика VS2010, все работает нормально, но когда я использую «Run Test (s)» из меню, приложение задыхается с ошибкой:

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

Таким образом, он останавливается, когда будет загружен первый текст. Что происходит?

Если вы хотите проверить код, скачайте его здесь http://www.mediafire.com/?qwnkmyqheum

1 Ответ

1 голос
/ 07 июня 2010

Очевидный вопрос здесь заключается в том, каков рабочий каталог, когда TD.NET запускает тест.Если ваши файлы находятся в C:\game1\content\*, а TD.NET запускает тесты во время работы в C:\TDNET (или где-либо еще), то очевидно, что попытка загрузить Content\Whatever.jpg будет пытаться открыть C:\TDNET\Content\Whatever.jpg, который не существует,Простой обходной путь - установить абсолютный путь для ваших файлов содержимого (хотя бы временно), чтобы убедиться, что это проблема.

Другой вопрос: какую версию TestDriven.net вы используете?В примечаниях к выпуску версии 2.7 говорится:

966: проблемы с тестами XNA (проблемы с рабочим каталогом)

См. здесь и здесь для обхода.

Первый сайт ссылается на второй, который предлагает этот обходной путь:

Шаг 1.

Загрузка AssemblyUtilities.zip и распакуйте его в свой проект и добавьте его в свое решение.

Шаг 2.

Для каждого специального теста, который вы хотите запустить, используйте команду:

Testdriven.NET.AssemblyUtilities.SetEntryAssembly();

Это необходимо вызвать перед загрузкой контента, например, в первой строке.

Пример специального теста можно увидеть здесь:

public static void myAdHocTest()

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

Шаг 3.

Запустите специальные тесты, как обычно, поместив курсор в тест, щелкните правой кнопкой мыши и выберите «Выполнить тест (ы)».

...