我正在尝试将tSQLt / SQLTest与CruiseControl.NET集成,我的测试正在运行,并且我已经编写了xsl文件来显示结果,但是我需要知道如果任何测试失败,如何将构建标记为失败。
我的CCNet exec是:
<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>那么,如何让整个构建失败呢?
发布于 2012-12-07 15:23:22
如果您对sqlcmd使用-b参数,您应该会发现当批处理失败时,它将抛出一个带有非零代码的错误(如果tSQLt至少有一次测试失败,就会发生这种情况)。
然而,我有一个潜在的建议可以探索。如果您可以在Cruise Control中加载XML文件,那么就可以加载测试,因为XML文件与nUnit测试输出文件的格式相同。(注意-我在TeamCity和Jenkins上使用过这种方法,但没有在Cruise Control上尝试过)。这将把测试视为测试,而不是“全有或全无”的方法,并使您能够跟踪哪些测试反复失败。
希望这能有所帮助,
戴夫。
https://stackoverflow.com/questions/13747453
复制相似问题