2012-02-28 1 views
14

伝統的に、nunit-console.exeはリポジトリとビルドサーバー(または他のマシン)に含まれています。このEXEはビルドスクリプトから呼び出されました。NUnit.Runnersパッケージとpsakeを使ってNUnitテストを実行するには?

NUnit.Runners packageが利用できるようになったので、これはpsakeビルドスクリプトからどのように使用できるのだろうかと思います。これはソリューションレベルのパッケージなので、packages.configにトレースを残さず、他のプロジェクトレベルのパッケージとして自動復元できないので、psakeスクリプトからInstall-Packageと呼ぶ必要があります。ダウンロードを待ってから実行してくださいユニットテスト?うまくいけば、このダウンロードは一度だけ実行でき、実行するたびにビルドを遅くすることはありません。それとも?

+0

私が正しく理解している限り、ランナーがインストールされているかどうかをチェックするタスクが必要です。そうでない場合は、nugetを実行してパッケージをインストールしますか? – stej

+1

はい、そのようなものです。 (理想的には、ソリューションレベルのパッケージには自動復元機能が組み込まれているはずです.nunit-console.exeを 'packages'フォルダのどこかで呼び出す必要がありますが、これはおそらくNuGetの将来のバージョンでのみ発生します) – Borek

+0

Iソリューションレベルのパッケージがまったく存在しないことを認識していませんでした。どのようにそれらを識別しますか? VSはNUnit.Runnersが既にインストールされていることをどのように追跡しますか? – springy76

答えて

0

これはあなたの質問には答えませんが、同様の問題に直面している人には役に立つかもしれません。 TeamCityビルドをセットアップしようとしているのと同じ問題が発生しました。私は古いバージョンのnunitに戻すことでこれを回避しました。

NUnit 2.5.10.11092にはまだnuget exeがあります。

8

これにはちょうど遭遇しました。

  1. 最新のNuget Package Manager拡張を入手してください。私は今1.8時です。
  2. ソリューション
  3. コピー今からあなたのユニットテストプロジェクトのpackages.configファイル

にあなたの.nugetフォルダの下にpackages.configからランナーに関連する要素にNunit.Runnersパッケージを追加します。あなたがビルドするときに、NugetはNunit.Runnersパッケージをマシン上に置かないとプルダウンします。私はその後、コマンドラインビルドのパッケージからNunitランナーを参照します。

私はTeamCity build light on Githubのために行った小さなプロジェクトでこれを使用しています。ユニットテストプロジェクトのPackages.configは、上記のように変更されました。 MSBuildファイルを見れば、コマンドラインからどのようにテストを実行するのかを知ることができます。 (build.proj、リポジトリのtools \ msbuildフォルダに含まれるいくつかのターゲットとプロパティを参照します)。 VS.NETまたはコマンドライン(clicktobuild.bat)からビルドを試みる前に、最新のNuget Package Managerがインストールされている必要があります。

Nunitコンソールを正しい場所からpsakeに実行する方法を移植することができるはずです。

+1

"light on Github"へのリンクが断たれています。404 :(working link https://github.com/SouthsideSoftware/BuildLight – roundcrisis

2

issue with nuget developersを作成し、修正案を提案しました。

nuget.targetsは、次のように変更してファイルを変更します。<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">

は、この要素を追加します。<PropertyGroup>

<SolutionLevelPackagesConfig>$([System.IO.Path]::Combine($(SolutionDir), ".nuget\packages.config"))</SolutionLevelPackagesConfig> 

を、この要素を追加します。<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">

<RestoreSolutionLevelCommand>$(NuGetCommand) install "$(SolutionLevelPackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreSolutionLevelCommand> 

を、この要素を追加WinNTのRestoreCommandの前:

<Exec Command="$(RestoreSolutionLevelCommand)" 
       LogStandardErrorAsError="true" 
       Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)') And Exists('$(SolutionLevelPackagesConfig)')" /> 

これは、私のmsbuildをソリューションレベルのパッケージを復元するようにしました。

関連する問題