1

tSQLt / SQLTestをCruiseControl.NETと統合しようとしています。テストが実行され、結果を表示するxslファイルを作成しましたが、テストが失敗した場合にビルドを失敗としてマークする方法を知る必要があります。

私のCCNetexecは次のとおりです。

<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>

では、ビルド全体を失敗させるにはどうすればよいですか?

4

1 に答える 1

1

sqlcmdに-bパラメーターを使用すると、バッチが失敗したときにゼロ以外のコードでエラーがスローされることがわかります(これは、tSQLtが少なくとも1つのテストに失敗した場合に発生します)。

ただし、検討すべき1つの潜在的な提案があります。Cruise Control内でXMLファイルをロードできる場合、XMLファイルはnUnitテスト出力ファイルと同じ形式であるため、テストをロードできます。(注-私はTeamCityとJenkinsでこの方法を使用しましたが、Cruise Controlでは試していません)。これにより、テストは「オールオアナッシング」アプローチではなくテストとして扱われ、どのテストが繰り返し失敗したかを追跡できるようになります。

お役に立てば幸いです。

デイブ。

于 2012-12-07T07:23:21.683 に答える