首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Jenkins运行NUnit测试?

如何从Jenkins运行NUnit测试?
EN

Stack Overflow用户
提问于 2012-02-03 07:00:24
回答 5查看 83K关注 0票数 111

我希望为C#应用程序运行自动化的NUnit测试,每晚在每次提交到svn时运行。

这是Jenkins-CI可以做到的吗?

是否有在线教程或how-to文档,其中记录了我可以查看的类似设置?

EN

回答 5

Stack Overflow用户

发布于 2014-05-24 04:18:43

如果你不想硬编码你的单元测试项目,你最好写一个脚本来抓取你所有的单元测试项目的dll。我们用Powershell来做这件事,并遵循命名我们的单元测试项目的特定约定。下面是运行我们的单元测试的powershell文件的内容:

代码语言:javascript
复制
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文件放到构建服务器上,并使用以下批处理命令:

代码语言:javascript
复制
powershell.exe -file "{full-path-to-script-direcory}\RunUnitTests.ps1"
票数 17
EN

Stack Overflow用户

发布于 2012-02-03 07:42:54

这很好用,我以前已经设置过了。

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

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

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

票数 8
EN

Stack Overflow用户

发布于 2013-11-14 02:41:01

我认为当构建没有通过时,最好失败,这样你就不会部署它。这样做:

代码语言:javascript
复制
C:\YourNUnitDir\nunit-console.exe C:\YourOutDir\YourLib.dll /noshadow
if defined ERRORLEVEL if %ERRORLEVEL% neq 0 goto fail_build

:: any other command

: fail_build
endlocal
exit %ERRORLEVEL%

参考:http://www.greengingerwine.com/index.php/2013/01/tip-check-errorlevel-in-your-post-build-steps-when-using-nunit/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9121312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档