Принудительная консоль 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
Но мой тест терпит неудачу. Любая идея, почему это происходит?
Ответы
Ответ 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.