你如何从Jenkins运行NUnit测试?

blu*_*lds 105 c# continuous-integration hudson jenkins

我正在寻找为C#应用程序运行自动NUnit测试,每晚和每次提交到svn.

这是Jenkins-CI能做的吗?
是否有在线教程或如何记录哪些文档类似我可以查看的设置?

Ral*_*oss 117

我需要完全按照你的方式做,这是我设置Jenkins的方法:

  1. 将NUnit插件添加到Jenkins
  2. 在您的项目中,转到配置 - > 构建 - > 添加构建步骤
  3. 在下拉列表中向下滚动到 - > 执行Windows批处理命令
  4. 确保在MSBuild步骤之后放置此步骤
  5. 添加以下内容,替换变量:

单个dll测试:

[PathToNUnit]\bin \nunit-console.exe [PathToTestDll]\Selenium.Tests.dll /xml=nunit-result.xml

使用NUnit测试项目进行多个dll测试:

[PathToNUnit]\bin \nunit-console.exe [PathToTests]\Selenium.Tests.nunit /xml=nunit-result.xml

  1. Post-build Actions下,勾选Publish NUnit测试结果报告
  2. 对于文本框测试报告XML,输入nunit-result.xml

构建项目后,NUNit现在将运行,结果将在仪表板上显示(如果将鼠标悬停在"天气"报告图标上)或" 上次测试结果"下的项目页面.

您还可以从Visual Studio中或作为本地构建过程的一部分运行该命令.

这是我用来参考的两篇博客文章.我没有找到符合我要求的任何内容:
1小时持续集成设置指南:Jenkins遇见.Net(2011)
使用Hudson构建.NET项目的指南(2008)

  • 只需使用*.nunit文件作为参数而不是DLL文件,例如`"C:\ Program Files(x86)\ NUnit 2.6.3\bin \nunit-console-x86.exe"UnitTests/UnitTests.nunit`.为我工作完美. (4认同)
  • 您可以使用*.sln文件而不是DLL,请参阅[文档](http://www.nunit.org/index.php?p=vsSupport&r=2.6.2) (3认同)
  • 唉唉.我的逻辑谬论是NUnit插件创建了一个新的"Build-Task"类型.它的神奇伏都教是Post-Build活动.(而且只使用常规命令行生成.xml) (2认同)

Dan*_*ton 16

如果您不想对单元测试项目进行硬编码,那么最好编写一个脚本来获取所有单元测试项目dll.我们使用Powershell进行操作,并按照特定惯例命名我们的单元测试项目.以下是运行我们的单元测试的powershell文件的内容:

param(
[string] $sourceDirectory = $env:WORKSPACE
, $fileFilters = @("*.UnitTests.dll", "*_UnitTests.dll", "*UnitTests.dll")
, [string]$filterText = "*\bin\Debug*"
)

#script that executes all unit tests available.
$nUnitLog = Join-Path $sourceDirectory "UnitTestResults.txt"
$nUnitErrorLog = Join-Path $sourceDirectory "UnitTestErrors.txt"

Write-Host "Source: $sourceDirectory"
Write-Host "NUnit Results: $nUnitLog"
Write-Host "NUnit Error Log: $nUnitErrorLog"
Write-Host "File Filters: $fileFilters"
Write-Host "Filter Text: $filterText"

$cFiles = ""
$nUnitExecutable = "C:\Program Files (x86)\NUnit 2.6.3\bin\nunit-console-x86.exe"

# look through all subdirectories of the source folder and get any unit test assemblies. To avoid duplicates, only use the assemblies in the Debug folder
[array]$files = get-childitem $sourceDirectory -include $fileFilters -recurse | select -expand FullName | where {$_ -like $filterText}

foreach ($file in $files)
{
    $cFiles = $cFiles + $file + " "
}

# set all arguments and execute the unit console
$argumentList = @("$cFiles", "/framework:net-4.5", "/xml=UnitTestResults.xml")

$unitTestProcess = start-process -filepath $nUnitExecutable -argumentlist $argumentList -wait -nonewwindow -passthru -RedirectStandardOutput $nUnitLog -RedirectStandardError $nUnitErrorLog

if ($unitTestProcess.ExitCode -ne 0)
{
    "Unit Test Process Exit Code: " + $unitTestProcess.ExitCode
    "See $nUnitLog for more information or $nUnitErrorLog for any possible errors."
    "Errors from NUnit Log File ($nUnitLog):"
    Get-Content $nUnitLog | Write-Host
}

$exitCode = $unitTestProcess.ExitCode

exit $exitCode
Run Code Online (Sandbox Code Playgroud)

该脚本足够强大,我们正在重用所有构建作业.如果您不喜欢NUnit控制台的完整路径,则可以始终将该位置放在PATH环境变量中.

然后我们将RunUnitTests.ps1文件放在我们的构建服务器上并使用此批处理命令:

powershell.exe -file "{full-path-to-script-direcory}\RunUnitTests.ps1"
Run Code Online (Sandbox Code Playgroud)


小智 14

对于Nunit 3或以上的farmework:

  1. 构建步骤(Windows命令行) "c:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" c:\AutomationTraining\CSharpSelenium\bin\Debug\test.dll --result=TestR.xml;format=nunit2

  2. Nunit报告发布的后续步骤,它仅在Jenkins工作空间目录中显示测试结果文件,而不是在您的项目中: TestR.xml

我们需要以nunit2格式制作测试结果,因为现在Jenkins Nunit插件无法识别Nunit3结果格式.选项字符串格式也不同: --result=TestR.xml;format=nunit2 NOT /xml=nunit-result.xml


jgl*_*uie 8

这很好用,我之前已经设置好了.

配置NUnit以将结果输出到XML文件,并配置NUnit Jenkins插件以使用此XML文件.结果将显示在仪表板上.

现在,您如何调用NUnit取决于您.我们这样做的方式是:Jenkins作业执行NAnt目标执行NUnit测试套件.

您可以将Jenkins作业配置为在提交时运行和/或在特定时间安排.