Подтвердить что ты не робот

Принудительная консоль nunit для использования CLR 4.5

У меня есть следующий простой тестовый пример:

var uri = new Uri("http://foo.com/bar%2Fbaz");
Assert.AreEqual("http://foo.com/bar%2Fbaz", uri.AbsoluteUri);

Этот тест завершился неудачно на .NET 4, но проходит на .NET 4.5, я могу протестировать его с помощью тестового бегуна ReSharper, который предоставляет удобное меню выбора CLR.

Но если я запустил этот тест с помощью nunit console runner, как показано ниже:

nunit-console.exe/framework:4.5 "C:\Data\Projects\UriTest\bin\Debug\UriTest.dll"

Мои тесты не пройдены. Я даже модифицировал nunit-console.exe.config и добавил это:

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

и после добавления этого, я начал получать этот вывод от бегуна:

Runtime Environment -
   OS Version: Microsoft Windows NT 6.2.9200.0
  CLR Version: 4.0.30319.34209 ( Net 4.5 )

ProcessModel: Default    DomainUsage: Single
Execution Runtime: v4.5

Но мой тест терпит неудачу. Любая идея, почему это происходит?

4b9b3361

Ответ 1

Взглянув более глубоко на эту проблему, вот информация, которую я собрал с разных форумов.

Во-первых, он должен автоматически определять время выполнения. Если это не так (это похоже на ваш случай), вы всегда можете заставить фреймворк использовать правильную среду выполнения, используя команду /framework command.

Что у вас в nunit-console.exe.config заставляет бегун NUnit использовать указанное время выполнения. Если ваша сборка находится в другой версии .NET, NUnit будет запускать их в отдельном процессе для принудительной версии фреймворка.

Смотрите документацию для NUnit 2.6.2.

То, что у вас есть в вашей командной строке, не должно быть /framework:4.5, а скорее /framework:net-4.5

Следующим шагом было бы взглянуть на ваш тест и посмотреть, есть ли что-то конкретное, из-за которого он терпит неудачу.

Прокомментируйте еще несколько вопросов для получения дополнительной информации.

Ответ 2

В .NET 4.0 Framework произошла ошибка в отношении косой черты. Вы можете проверить описание здесь. В 4.5 он был исправлен, чтобы сделать результат RFC-3986 совместимым. Итак, почему у вас другое поведение для 4.0 и 4.5.