Build 如何使用NUnit.Runners包和psake执行NUnit测试?

Build 如何使用NUnit.Runners包和psake执行NUnit测试?,build,nunit,nuget,psake,Build,Nunit,Nuget,Psake,传统上,nunit console.exe已包含在存储库和生成服务器(或任何其他计算机)上,此exe是从某个生成脚本调用的 现在可以使用了,我想知道如何从psake构建脚本中使用它。它是一个解决方案级别的软件包,因此它不会在packages.config中留下任何痕迹,并且不能像其他项目级别的软件包一样自动恢复,因此我想您需要从psake脚本调用Install package,等待下载,然后执行单元测试?希望此下载只能运行一次,并且不会在每次运行时都减慢构建速度。或者会吗?这并不能回答您的问题,

传统上,
nunit console.exe
已包含在存储库和生成服务器(或任何其他计算机)上,此exe是从某个生成脚本调用的


现在可以使用了,我想知道如何从psake构建脚本中使用它。它是一个解决方案级别的软件包,因此它不会在
packages.config
中留下任何痕迹,并且不能像其他项目级别的软件包一样自动恢复,因此我想您需要从psake脚本调用
Install package
,等待下载,然后执行单元测试?希望此下载只能运行一次,并且不会在每次运行时都减慢构建速度。或者会吗?

这并不能回答您的问题,但可能对面临类似问题的人有用。我在建立TeamCity时遇到了同样的问题。我通过恢复到nunit的旧版本来解决这个问题


NUnit 2.5.10.11092仍然在nuget包中包含NUnit exe。

我自己刚刚遇到这个问题。很容易修复,如下所示:

  • 获取Nuget包管理器扩展的最新版本。我现在是1.8
  • 将Nunit.Runners包添加到您的解决方案中
  • 将与运行程序相关的元素从.nuget文件夹下的packages.config复制到单元测试项目的packages.config文件中
  • 从现在开始,当您构建时,Nuget将拉下Nunit.Runners包(如果它不在机器上)。然后,我从命令行构建中的包中引用Nunit运行程序

    我在一个小项目中工作了一段时间。单元测试项目中的Packages.config已按上述方式修改。您可以查看MSBuild文件,了解我如何从命令行运行测试。(build.proj,它引用存储库的tools\msbuild文件夹中包含的一些目标和属性)。您需要先安装最新的Nuget Package Manager,然后才能尝试在VS.NET中或通过命令行(单击ToBuild.bat)进行构建

    您应该能够很容易地将如何从正确位置运行Nunit控制台的想法移植到psake中。

    我已经创建了一个,并提出了一个修复方案

    使用以下更改修改nuget.targets文件:

    中添加此元素:

    <SolutionLevelPackagesConfig>$([System.IO.Path]::Combine($(SolutionDir), ".nuget\packages.config"))</SolutionLevelPackagesConfig>
    
    <RestoreSolutionLevelCommand>$(NuGetCommand) install "$(SolutionLevelPackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreSolutionLevelCommand>
    
    $([System.IO.Path]::合并($(SolutionDir),“.nuget\packages.config”))
    
    中添加此元素:

    <SolutionLevelPackagesConfig>$([System.IO.Path]::Combine($(SolutionDir), ".nuget\packages.config"))</SolutionLevelPackagesConfig>
    
    <RestoreSolutionLevelCommand>$(NuGetCommand) install "$(SolutionLevelPackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreSolutionLevelCommand>
    
    $(NuGetCommand)安装“$(SolutionLevelPackageConfig)”-源“$(PackageSources)”$(RequiredSentSwitch)-solutionDir“$(solutionDir)”
    
    中,将此元素添加到WinNT的RestoreCommand之前:

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

    这使我的msbuild无法还原解决方案级软件包。

    据我所知,您需要一个任务来检查运行程序是否已安装,如果未安装,则运行nuget并安装软件包?是的,类似于此。(理想情况下,解决方案级软件包应该内置自动恢复功能,我只需在
    packages
    文件夹中的某个位置调用nunit-console.exe,但这可能只会出现在未来版本的NuGet中。)我根本不知道解决方案级软件包存在。你如何识别他们?VS如何跟踪已安装的NUnit.Runners?指向“Github上构建灯光”的链接已断开404:(,工作链接)