来自tSQLt的成功退出代码是什么?

时间:2012-12-06 15:55:30

标签: cruisecontrol.net tsqlt

我正在尝试将tSQLt / SQLTest与CruiseControl.NET集成 我的测试正在运行,我已经编写了xsl文件来显示结果,但我需要知道如果任何测试失败,如何将构建标记为失败。

我的CCNet执行官是:

<exec executable="$(sqlCmdPath)">
    <description>Run Unit Tests</description>
    <buildArgs>-E -d MyDatabase 
       -i "\CruiseControlProjects\Configuration\CI_SQL\RunTests.sql"
    </buildArgs>
    <baseDirectory>\Artifacts\MyDatabase</baseDirectory>
    <successExitCodes>0,63</successExitCodes>
</exec>

RunTests.sql:

IF EXISTS (SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[tSQLt].[RunAll]')
AND TYPE IN (N'P',N'PC'))
BEGIN
EXECUTE [tSQLt].[RunAll]
END

运行测试,我有一个后续任务,它以xml生成结果,然后合并到构建日志中:

<exec executable="$(sqlCmdPath)">
    <description>Get Unit Tests</description>
    <buildArgs>-E -b -d MyDatabase -h-1 -y0 -I 
       -i "\CruiseControlProjects\Configuration\CI_SQL\GetTestResults.sql" 
       -o "\CruiseControlProjects\Configuration\CI_SQL\Results\TestResults.xml"
    </buildArgs>
    <baseDirectory>\Artifacts\MDatabase</baseDirectory>
    <successExitCodes>0,63</successExitCodes>
</exec>

那么如何让整体构建失败呢?

1 个答案:

答案 0 :(得分:1)

如果对sqlcmd使用-b参数,您会发现当批处理失败时会抛出一个非零代码的错误(如果tSQLt至少失败了一次测试,则会发生这种情况)。 / p>

但是,我有一个潜在的建议可供探讨。如果您可以在Cruise Control中加载XML文件,则可以加载测试,因为XML文件的格式与nUnit测试输出文件的格式相同。 (注意 - 我在TeamCity和Jenkins上使用过这种方法,但没有尝试使用Cruise Control。这会将测试视为测试而不是“全有或全无”方法,并使您能够跟踪哪些测试反复失败。

希望有所帮助,

戴夫。