Сбой относительного пути монахини - PullRequest
1 голос
/ 20 марта 2010

У меня проблема с Nunit, из-за которой я не могу найти файл изображения при запуске своих тестов, и каждый раз, когда он ищет изображения, он смотрит в папку Nunit, а не заглядывает внутрь папки, в которой находится бинарный файл. Ниже приведено подробное описание происходящего.

  1. Я создаю тестируемый двоичный файл, который содержит определение некоторых игровых элементов и png-файлов, которые будут определять используемые мной спрайты (для здравого смысла, назовите его Binary1)
  2. Nunit запускает тесты из отдельного двоичного файла (Binary1Test), выполняя методы тестирования для первого двоичного файла (Binary1).
  3. Все тесты проходят, если только тест не выполняет код в Binary1, который затем требует, чтобы Binary1 использовал один из файлов изображений (которые определены через относительный путь). Когда метод вызывается, Nunit выдает исключение «файл не найден», заявляя, что не может найти файл, и заявляет, что просматривает папку Program Files \ Nunit.net 2.0

Так что я понятия не имею, почему код делает это, и чтобы еще больше запутать ситуацию, когда я открываю Enviornment.CurrentDirectory, он дает мне правильный путь (путь к моей папке отладки), а не путь к nunit. Также, если я использую это вместо относительного пути, мои тесты будут выполняться без проблем. Итак, мой вопрос: кто-нибудь знает, почему в случае загрузки относительных путей из моего двоичного файла nunit решает использовать свой каталог вместо каталога, в котором находится двоичный файл и где хранятся изображения? Спасибо.

1 Ответ

0 голосов
/ 21 марта 2010

Я не уверен, почему это происходит, но хотел бы упомянуть кое-что, что может помочь вам немного устранить неполадки. Есть ли у вас какие-либо утверждения ограничения пути в ваших тестах? Это может помочь вам решить эту проблему.

Вот ссылка NUnit.org для синтаксиса: http://www.nunit.org/index.php/extensions/docs/2.4/files/index.php?p=pathConstraints&r=2.5.1

Вот пример (из вышеуказанной ссылки) синтаксиса для относительных путей. Вы можете утверждать, что ваш относительный путь совпадает с абсолютным путем и посмотреть, что происходит. По крайней мере, у вас будет конкретный провальный тест о путях, которые вам нужно пройти.

Assert.That( "/folder1/./junk/../folder2", 
    Is.SamePath( "/folder1/folder2" ) );
Assert.That( "/folder1/./junk/../folder2/x", 
    Is.Not.SamePath( "/folder1/folder2" ) );
...