User Guide


This reference contains an explanation of each of the public tables, views, stored procedures and functions provided by tSQLt.

 Posted by at 12:20 am

  23 Responses to “User Guide”

  1. Hi,

    Can we get documentation of TSQL framework the in PDF format?


  2. Can an individual test take a parameter? For example, we have login/logout functionality where we store the user in a table. I write a unit test to verify this. Then, I need to go to another unit – which also requires that the user is logged in. Rather than rewriting (or copying/pasting, faking data), I would like to call the previous unit test to login the user(variable), then perform the rest of the tests. Is this possible? There also may be different levels of accessiblity depending on the user name, but really only want to write a single unit test (again to avoid copy/pasting) that can verify this based on the user name passed.

    • Currently tSQLt does not support parameterized tests. (It is on the backlog however.)

      Additionally, you do want all your tests to be independent of each other. That leads to only one (or very few) tests failing when a new defect is introduced. That in turn makes it easy to figure out what caused the problem.

      If you have dependent tests, one failure could lead to many failing tests of which the majority likely does not even touch the broken piece of code. That makes troubleshooting unnecessarily hard.

  3. Is there any way to change the format that tSQLt displays after completing a test. For example, making each failure message to have a blank line beneath it?

  4. I recently started using tSQLt and I really like it. I have a little problem when I am trying to test a stored procedure containing “ALTER TABLE tablename ADD CONSTAINT …”. I got the error:

    [testclass].[testcase] failed: (Error) Could not create constraint. See previous errors.{[name of the stored proc called in the testcase],304}

    If I removed this line of code from the stored proc, the test case is running sucessfully, Is it supposed to be supported by the framework? Is there any workaround? Thanks for your help.

  5. Hi.
    How can i integrating tsqlt with Mstest runner on Visual studio 2012 ?

  6. I think ResultSetFilter should be included on this page, maybe under “Test Creation and Execution”?


  7. I’m looking for a way to run tests and persist results in my own custom fashion. tSQLt smartly rolls back every transaction (being a test suite, this makes sense). I’ve tried BEGIN TRAN/COMMIT TRAN inside my procedures for commands I don’t want rolled back – like additional logging, but I realize those transactions begin as a child of the tSQLt parent transaction.

    Any suggestions?

    • You could use tSQLt.NewConnection to insert data into a table outside the current transaction. Be very careful however to not block yourself, as that will cause an undetectable deadlock.

      Here is a demo:

      CREATE TABLE dbo.tst(i INT)

      EXEC tSQLt.NewConnection 'INSERT dbo.tst(i) VALUES(13);';

      SELECT * FROM dbo.tst;

      DROP TABLE dbo.tst;

  8. [...] informacji można znaleźć na stronie szybkiego wprowadzenia oraz bardziej szczegółowo tutaj. Share this:TwitterFacebookDodaj do ulubionych:LubięBe the first [...]

  9. [...] to our needs. You can find tutorial and user-guide information available on the tsqlt site ( The framework provides support for many advanced features, including the creation of fake tables, [...]

  10. Method “AssertResultSetsHaveSameMetaData” Doesnt seem to work on SQL 2008 R2 / .NET framework 4. I get below error:

    Msg 6522, Level 16, State 1, Procedure AssertResultSetsHaveSameMetaData, Line 0
    A .NET Framework error occurred during execution of user-defined routine or aggregate “AssertResultSetsHaveSameMetaData”:
    System.Data.SqlClient.SqlException: tSQLt.Failure
    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
    at System.Data.SqlClient.SqlCommand.RunExecuteNonQuerySmi(Boolean sendToPipe)
    at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
    at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
    at tSQLtCLR.TestDatabaseFacade.assertEquals(String expectedString, String actualString)
    at tSQLtCLR.MetaDataEqualityAsserter.AssertResultSetsHaveSameMetaData(SqlString expectedCommand, SqlString actualCommand)
    at tSQLtCLR.StoredProcedures.AssertResultSetsHaveSameMetaData(SqlString expectedCommand, SqlString actualCommand)

    • Guru, I have not used this testing framework before, but I can validate that I am getting the same error when the metadata is not the same. This is executing on sql 2008 r2 as well.
      When the metadata is the same, no error is thrown.

      The guide does say that an error will be raised when the schema does not match, but I would expect the message to have information about what the differences were.

      I would be happy to contribute to this project to get it working.


  11. [...] help you identify the exact point of failure in a multi-assertion test failed. This is how the the Official tSQLt User Guide describes the method signature for AssertEquals . Syntax tSQLt.AssertEquals [@expected = ] [...]

  12. [...] the meantime, you can check out the Quick Start Guide or, for more detail the tSQt User [...]

 Leave a Reply



* Copy This Password *

* Type Or Paste Password Here *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Bad Behavior has blocked 923 access attempts in the last 7 days.