Как выполнить тест NUnit с помощью пакета NUnit.Runners и psake? - PullRequest
14 голосов
/ 28 февраля 2012

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

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

Ответы [ 3 ]

8 голосов
/ 26 мая 2012

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

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

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

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

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

2 голосов
/ 19 октября 2012

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

0 голосов
/ 20 марта 2012

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

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

...