Вопрос

Я пишу простую игру Pong в C# и XNA 4.0, чтобы изучить модульное тестирование. Используемые инструменты являются TestDriven.net и NUNIT, все новейшие версии. Проблема в том, что если я тестирую код с внутренним отладчиком VS2010, все работает нормально, но когда я использую «run test (ы)» из меню, приложение задыхается с ошибкой:

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

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

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

Это было полезно?

Решение

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

Другой вопрос: какая версия testdriven.net вы используете? Их выпуск записи от 2.7 Скажите следующее:

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

Видеть здесь а также здесь для обходного пути.

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

Шаг 1.

Скачать AssemblyUtials.zip и распаковать в свой проект и добавить его в свое решение.

Шаг 2.

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

Testdriven.NET.AssemblyUtilities.SetEntryAssembly();

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

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

public static void myAdHocTest()

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

Шаг 3.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top