如何从Jenkins运行NUnit测试?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

我希望对一个C#应用程序运行自动化的NUnit测试,每晚和每次提交SVN。

这是詹金斯-CI能做的事吗?

是否有在线教程或如何记录我可以查看的类似设置的文档?

提问于
用户回答回答于
  1. 将NUnit插件添加到Jenkins
  2. 在你的项目中配置->建房->添加构建步骤
  3. 在下拉滚动到->执行Windows批处理命令
  4. 确保此步骤位于MSBuild步骤之后
  5. 添加以下内容,替换变量:

单个DLL测试:

使用 NUnit测试项目:

  1. 构建后的操作,滴答发布NUnit测试结果报告
  2. 用于文本框测试报告XML进入nunit-Result.xml

一旦建立了项目,NUNit现在将运行,结果可以在仪表板上查看(如果您悬停在天气报告图标上),或者显示在项目页面下面。最后测试结果

还可以在VisualStudio中或作为本地生成过程的一部分运行该命令。

用户回答回答于

如果不想硬编码单元测试项目,最好编写一个脚本来获取所有的单元测试项目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

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

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

powershell.exe -file "{full-path-to-script-direcory}\RunUnitTests.ps1"

扫码关注云+社区

领取腾讯云代金券