如何在TeamCity 9.x中安装nUnit 3 nunit3-console.exe

Bre*_*the 16 teamcity nunit-3.0

现在,TeamCity 9.1.x支持NUnit 3.0,但是您必须安装运行器并在步骤中指定nunit3.console.exe的路径.我的问题是我在哪里复制nunit3-console.exe?我必须把它放在所有代理商身上吗?我是否将它放在我的主TeamCity服务器上的目录中,它将由代理共享或拉取?似乎没有关于在何处复制这些文件的良好文档,以便所有代理都可以使用它们.

小智 28

您应该在要运行NUnit测试的每个代理上安装NUnit控制台.

最好的选择是:

  1. 添加对NuGet包的引用(https://www.nuget.org/packages/NUnit.Runners/).

  2. 要恢复包,您可以使用"NuGet Installer"构建步骤,请参阅以下博客文章:https://blog.jetbrains.com/teamcity/2013/08/nuget-package-restore-with-teamcity/

  3. 之后,您只需从已恢复的NuGet包中设置路径,例如"packages\NUnit.Console.3.0.0\tools \nunit3-console.exe".

  • 是我还是这有点荒谬?我在没有看到这个答案的情况下走了这条路,但是当我在解决方案中更新软件包时,人们会想知道为什么他们的TC版本因为软件包版本名称不再更新而失败了日期. (13认同)
  • @NathanAldenSr如果TC能够在packages目录中自动检测最新的控制台运行器,而不必指定任何内容,那会更好.如果TC甚至可以从NuGet获取最新版本(除非你在解决方案中提供它)并且针对它运行它会更好,这样开发人员在放置项目时不需要考虑他们的构建服务器需求一起. (2认同)
  • Nunit.Runners包现已弃用,您必须使用NUnit.ConsoleRunner.小心不要使用其他10个以上听起来相似的nunit软件包之一,即NUnit.Console,NUnit.Runners,NUnit.Engine,NUnit.Extension.TeamCityEventListener等等.自己考虑XUnit ......这是为了运行一些单元测试而变得有点单调乏味. (2认同)
  • @woogy奇异的Nunit.Console包将拉入Nunit.ConsoleRunner和其他位,虽然你必须给出一个Nunit.ConsoleRunner的路径,而不仅仅是针对exe的Nunit.Console. (2认同)

Nat*_*nSr 7

以@ NikolayP的答案为基础:

  1. 添加对NuGet包的引用(https://www.nuget.org/packages/NUnit.Runners/).
  2. 要恢复包,您可以使用"NuGet Installer"构建步骤,请参阅以下博客文章:https://blog.jetbrains.com/teamcity/2013/08/nuget-package-restore-with-teamcity/
  3. 之后,您只需从已恢复的NuGet包中设置路径,例如"packages\NUnit.Console.3.0.0\tools \nunit3-console.exe".

我编写了以下PowerShell脚本来确定正确的NUnit.ConsoleRunner包目录,并在运行NUnit任务之前填充TeamCity变量.它使用最新版本的NUnit.Console包.

$SrcDirectory = "%src.directory%"
$PackagesDirectory = Join-Path $SrcDirectory packages

$NUnitConsoleRunnerPackageDirectory = Get-ChildItem (Join-Path $PackagesDirectory NUnit.ConsoleRunner.*) | %{
    @{
        Directory = $_.FullName
        Version = [Version]::Parse(($_.Name -replace "NUnit.ConsoleRunner.",""))
    }
} | Sort-Object Version -Descending | Select-Object -First 1 | %{ $_.Directory }

if (!$NUnitConsoleRunnerPackageDirectory) {
    throw [IO.DirectoryNotFoundException] "NUnit console runner package directory not found"
}

Write-Output "##teamcity[setParameter name='nunit.consolerunner.directory' value='$NUnitConsoleRunnerPackageDirectory']"
Run Code Online (Sandbox Code Playgroud)

请注意,您需要将src.directory变量定义为指向包含packages构建代理程序目录的目录,或者为PowerShell脚本提供必要的根目录.您还需要nunit.consolerunner.directory使用默认值empty 定义变量.

如果由于某种原因无法找到NUnit.ConsoleRunner目录,该脚本也将抛出异常.


Pav*_*her 2

构建正在代理上运行,因此您需要在要运行构建的所有代理上安装 NUnit3。

  • 您还必须在 TC 构建配置中添加 nunit 控制台的路径,例如 C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe。现在这看起来很尴尬 - 如果我将下拉菜单设置为 Nunit 3,我希望 TeamCity 能够像以前一样自行捆绑/解析 Nunit。现在感觉这并不比仅仅包含一个手动命令行构建步骤来自行处理 Nunit 好多少。 (5认同)