Как выполнить NUnit-тест с использованием пакета NUnit.Runners и psake?
Традиционно nunit-console.exe
был включен в репозиторий и на сервер сборки (или на любой другой компьютер), этот EXE был вызван из некоторой сборки script.
Теперь, когда доступен пакет NUnit.Runners, я задаюсь вопросом, как это можно использовать из сборки psake script. Это пакет на уровне решения, поэтому он не оставляет никаких следов в packages.config
и не может быть автоматически восстановлен как другие пакеты на уровне проекта, поэтому я думаю, что нужно было бы вызвать Install-Package
из psake script, подождать для загрузки, а затем выполнить модульные тесты? Надеемся, что эту загрузку можно запустить только один раз, и она не будет замедлять сборку каждый раз, когда она запускается. Или это будет?
Ответы
Ответ 1
Просто наткнулся на это сам. Довольно легко исправить следующее:
- Получить последнюю версию расширения Nuget Package Manager. Сейчас я на 1.8.
- Добавьте пакет Nunit.Runners в ваше решение.
- Скопируйте элемент, связанный с бегуном, из пакета pack.config под вашей .nuget-папкой в файл packages.config вашего проекта unit test
С этого момента, когда вы будете строить, Nuget вытащит пакеты Nunit.Runners, если он не находится на машине. Затем я ссылаюсь на бегун Nunit из пакета в моей сборке командной строки.
У меня это работает в небольшом проекте, который я сделал для TeamCity для освещения Github. Packages.config в проекте unit test был изменен, как обсуждалось выше. Вы можете посмотреть файл MSBuild, чтобы узнать, как я запускаю тесты из командной строки. (build.proj, который ссылается на некоторые цели и свойства, содержащиеся в инструментах репозитория \msbuild). Вам понадобится последний Nuget Package Manager, установленный до того, как вы попытаетесь построить VS.NET или из командной строки (clicktobuild.bat).
Вы должны уметь переносить идею о том, как легко запускать консоль Nunit из нужного места в psake.
Ответ 2
Я создал проблему с разработчиками nuget и предложил исправление.
Измените файл nuget.targets со следующими изменениями:
В <PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
добавьте этот элемент:
<SolutionLevelPackagesConfig>$([System.IO.Path]::Combine($(SolutionDir), ".nuget\packages.config"))</SolutionLevelPackagesConfig>
В <PropertyGroup>
добавьте этот элемент:
<RestoreSolutionLevelCommand>$(NuGetCommand) install "$(SolutionLevelPackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreSolutionLevelCommand>
В <Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
добавьте этот элемент перед RestoreCommand для WinNT:
<Exec Command="$(RestoreSolutionLevelCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)') And Exists('$(SolutionLevelPackagesConfig)')" />
Это сделало мой msbuild для восстановления пакетов уровня решения.
Ответ 3
Это не отвечает на ваш вопрос, но может быть полезным для тех, кто сталкивается с подобной проблемой. Я столкнулся с той же проблемой, пытаясь создать сборку TeamCity. Я работал над этим, возвращаясь к более старой версии nunit.
NUnit 2.5.10.11092 все еще имеет nunit exe в пакете nuget.