在Jenkins中没有运行NUnit测试时触发正确的电子邮件

时间:2013-11-26 17:41:05

标签: selenium jenkins nunit nunit-console email-ext

设定:

  • 詹金斯
  • NUnit的
  • Email-ext(Jenkins插件)

我们在C#中有一个测试套件可以进行设置:它在TestRail中检查测试计划中存在哪些测试,并写入一个测试列表的文件。 Jenkins的构建有两个构建步骤(在pull& build之后):

  1. 运行设置套件以获取打扰运行的测试列表。
  2. 运行套件,使用/runlist NUnit参数拉入该列表。
  3. 当有要运行的测试时,这非常有效。

    但是,由于[完全独立的实现],有时该文件为空。因此,“运行与列表”构建步骤的NUnit结果:

    Tests run: 0, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0.010100375885762 seconds
    Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0
    

    这告诉Jenkins这一步失败了:

    C:\Program Files (x86)\Jenkins\jobs\[job_name]\workspace>exit 0 
    Archiving artifacts
    Recording NUnit tests results
    No test report files were found. Configuration error?
    Build step 'Publish NUnit test result report' changed build result to FAILURE
    Email was triggered for: Failure
    Sending email for trigger: Failure
    

    我想要的是两件事之一:

    • 至少,它不会发送失败的电子邮件。
    • 理想情况下,设置构建步骤的结果会告诉构建停止,因为没有什么可构建的。将发送“已中止”电子邮件触发器。

    如何配置Jenkins / this build以实现这一目标?

1 个答案:

答案 0 :(得分:1)

我相信我找到了自己问题的答案。

步骤:

  • 安装Conditional Build Step plugin
  • 安装Fail The Build plugin
  • 添加批处理脚本,如果测试运行文件大小为0,则返回错误代码1,否则返回错误代码0。
  • 添加一个条件构建步骤:
    • 执行Windows批处理命令==批处理文件的路径。
    • 设置构建结果==不稳定(或其他)。

我的批处理文件代码:

@echo off

REM Retrieve the build name.
set arg1=%1

REM Set the file name.
set file="C:\Path\To\TestsToRunFile\%arg1%.txt"

REM Get the file size.
FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA

REM Exit codes based on the file size.
IF %size% EQU 0 (
    exit /b 0
) ELSE (
    exit /b 1
)