Как выполнить тест NUnit с помощью пакета NUnit.Runners и psake?

Традиционно nunit-console.exe был включен в репозиторий, и на сервере сборки (или любой другой машине) этот EXE вызывался из какого-то сценария сборки.

Теперь, когда доступен пакет NUnit.Runners, мне интересно, как его можно использовать из скрипта сборки psake. . Это пакет уровня решения, поэтому он не оставляет следов в packages.config и не может быть автоматически восстановлен, как другие пакеты уровня проекта, поэтому я предполагаю, что нужно будет вызвать Install-Package из скрипта psake, дождаться загрузки и затем выполнить модульные тесты? Надеемся, что эту загрузку можно будет запустить только один раз, и это не будет замедлять сборку при каждом запуске. Или будет?


person Borek Bernard    schedule 28.02.2012    source источник
comment
Так насколько я правильно понимаю, вам нужен таск, который проверяет установлены ли раннеры и если нет, то запускает nuget и устанавливает пакет?   -  person stej    schedule 02.03.2012
comment
Да что-то подобное. (В идеале пакеты уровня решения должны иметь встроенную функцию автоматического восстановления, и я должен просто вызвать nunit-console.exe где-нибудь внутри папки packages, но это, вероятно, появится только в какой-то будущей версии NuGet.)   -  person Borek Bernard    schedule 02.03.2012
comment
Я не знал, что пакеты уровня решения вообще существуют. Как вы их идентифицируете? Как VS отслеживает, что NUnit.Runners уже установлен?   -  person springy76    schedule 19.03.2012


Ответы (3)


Просто столкнулся с этим сам. Довольно легко исправить следующим образом:

  1. Получите последнюю версию расширения Nuget Package Manager. У меня сейчас 1.8.
  2. Добавьте пакет Nunit.Runners в свое решение.
  3. Скопируйте элемент, связанный с бегуном, из packages.config в вашей папке .nuget в файл packages.config вашего проекта модульного тестирования.

Отныне при сборке Nuget будет удалять пакеты Nunit.Runners, если их нет на компьютере. Затем я ссылаюсь на бегун Nunit из пакета в моей сборке командной строки.

У меня это работает в небольшом проекте, который я сделал для TeamCity build light на Github. Packages.config в проекте модульного тестирования был изменен, как обсуждалось выше. Вы можете посмотреть файл MSBuild, чтобы увидеть, как я запускаю тесты из командной строки. (build.proj, который ссылается на некоторые цели и свойства, содержащиеся в папке tools\msbuild репозитория). Вам потребуется установить последнюю версию диспетчера пакетов Nuget, прежде чем пытаться выполнить сборку в VS.NET или из командной строки (clicktobuild.bat).

Вы должны быть в состоянии легко перенести идею запуска консоли Nunit из нужного места в psake.

person Tom Cabanski    schedule 26.05.2012
comment
Ссылка на сборку света на Github не работает 404 :(, рабочая ссылка github.com/SouthsideSoftware/BuildLight - person roundcrisis; 02.01.2013

Я создал проблему с разработчиками 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 восстановить пакеты уровня решения.

person Sunny Milenov    schedule 19.10.2012

Это не ответ на ваш вопрос, но может быть полезно для тех, кто сталкивается с аналогичной проблемой. Я столкнулся с той же проблемой, пытаясь настроить сборку TeamCity. Я работал над этим, возвращаясь к более старой версии nunit.

NUnit 2.5.10.11092 по-прежнему содержит исполняемые файлы nunit в пакете nuget.

person HatAndBeard    schedule 20.03.2012