FiLenotFound Exception при использовании TestDriven.net и NUNIT
-
24-10-2019 - |
Вопрос
Я пишу простую игру 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 (ы)».