Как да изпълня 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 runner от пакета в компилацията на моя команден ред.

Това работи в малък проект, който направих за TeamCity build light в Github. Packages.config в проекта за модулен тест е променен, както е обсъдено по-горе. Можете да погледнете файла MSBuild, за да видите как изпълнявам тестове от командния ред. (build.proj, който препраща към някои цели и свойства, съдържащи се в папката tools\msbuild на хранилището). Ще ви е необходим най-новият Nuget Package Manager, инсталиран, преди да опитате да изградите във 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 exe в пакета nuget.

person HatAndBeard    schedule 20.03.2012