14

従来、nunit-console.exeリポジトリに含まれており、ビルド サーバー (または他のマシン) では、この EXE が何らかのビルド スクリプトから呼び出されていました。

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

4

3 に答える 3

8

自分でこれに遭遇しました。次のように修正するのは非常に簡単です。

  1. Nuget Package Manager 拡張機能の最新バージョンを取得します。私は現在1.8です。
  2. Nunit.Runners パッケージをソリューションに追加します
  3. ランナーに関連する要素を、.nuget フォルダーの下の packages.config から単体テスト プロジェクトの packages.config ファイルにコピーします。

これからビルドすると、マシン上にない場合、Nuget は Nunit.Runners パッケージをプルダウンします。次に、コマンド ライン ビルドでパッケージから Nunit ランナーを参照します。

これは、Github の TeamCity ビルド ライト用に行った小さなプロジェクトで機能しています。上記のように、単体テスト プロジェクトの Packages.config が変更されました。コマンド ラインからテストを実行する方法については、MSBuild ファイルを参照してください。(build.proj。リポジトリの tools\msbuild フォルダーに含まれるいくつかのターゲットとプロパティを参照します)。VS.NET で、またはコマンド ライン (clicktobuild.bat) からビルドする前に、最新の Nuget パッケージ マネージャーをインストールする必要があります。

Nunit コンソールを適切な場所から psake に実行する方法のアイデアを非常に簡単に移植できるはずです。

于 2012-05-26T17:47:33.717 に答える
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">WinNTのRestoreCommandの前にこの要素を追加します。

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

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

于 2012-10-19T16:46:06.243 に答える
0

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

NUnit 2.5.10.11092 には、nuget パッケージに nunit exe がまだ含まれています。

于 2012-03-20T18:20:10.877 に答える