How can we help you today? How can we help you today?

How can you get a build to fail when the tests fail?

I am trying to use MSBuild and SQLCMD to run my tSQLt tests as part of the build/deploy process, but when MSBuild executes the tests, the command result is always a success (even when a test fails).

	<Target Name="Test">
		<Message Text="==================================================" />
		<Message Text="== Run tSQLt Tests" />
		<Message Text="==" />

		<Exec Command=""$(SqlCmdPath)" -Q "EXEC tSQLt.RunAll" -S localhost -d MyDb -E" />

		<Message Text="==================================================" />
	</Target>

Is there a way to get the sqlcmd command to fail when the tests fail?


Another question:
Can the tests produce an XML file that can be parsed and used for reporting on a CI server such as Jenkins or TeamCity?
JackAce
0

Comments

4 comments

  • David Atkinson
    Yes, this is possible as tSQLt can output an Ant JUnit XML Report, which can be consumed by CI tools. Rather than describe it here, I'll direct you to Dave Green's excellent article:

    http://www.simple-talk.com/sql/sql-tool ... tegration/

    Although the example uses TeamCity, this applies to all CI tools.

    Let us know how you get on.

    David Atkinson
    Red Gate
    David Atkinson
    0
  • JackAce
    In case anyone else was wondering, I found the solution to the build failure problem. You can cause sqlcmd.exe to fail if you use the -b option
       <Target Name="Test"> 
          <Message Text="==================================================" /> 
          <Message Text="== Run tSQLt Tests" /> 
          <Message Text="==" /> 
    
          <Exec Command=""$(SqlCmdPath)" -Q "EXEC tSQLt.RunAll" -S localhost -d MyDb -b -E" /> 
    
          <Message Text="==================================================" /> 
       </Target> 
    
    JackAce
    0
  • David Atkinson
    Glad you got that working.

    Did you get the integration with your CI tool working using TestResults.xml?

    David
    David Atkinson
    0
  • JackAce
    Yes, this is possible as tSQLt can output an Ant JUnit XML Report, which can be consumed by CI tools. Rather than describe it here, I'll direct you to Dave Green's excellent article:

    http://www.simple-talk.com/sql/sql-tool ... tegration/

    Thanks, David. I've amended my scripts.
    JackAce
    0

Add comment

Please sign in to leave a comment.