Skip to content

Latest commit

 

History

History
97 lines (79 loc) · 4.2 KB

README.md

File metadata and controls

97 lines (79 loc) · 4.2 KB

NuGet Nuget

tSQLt-edge

tSQLt-compatible unit testing framework for SQL Server 2019 and 2022. It is available as a nuget package and works perfectly with MSBuild.SDK.SqlProj project format.

Description

This project was created in order to practice code writing in TDD. Here are some detailed principles I was followed:

  • Use modern Sql150 syntax
  • Do not use CLR code
  • Use CONCAT or CONCAT_WS instead of adding strings (+)
  • Use STRING_AGG instead of concatenate strings with FOR XML PATH
  • Use tSQLt assertions in internal tests

Compatibility

tSQLt-edge is mostly fully compatible with tSQLt unit testing framework. See full user guide for more details about tSQLt.

The default method of calling tSQLt.NewTestClass to create a tSQLt test class (the schema to organize your unit tests) does not work either in Visual Studio database projects nor MSBuild.SDK.SqlProj projects. That is why tSQLt-edge entirely drop support for NewTestClass, DropClass and RenameClass.

Status
Fully compatible
Large or partial support
Unsupported

Test creation and execution:

Assertions:

Expectations:

Isolating dependencies:

Extentions

tSQLt-edge has some additional features:

Stored procedure Description
ApplyIndex Same as ApplyConstraint, but for INDEXES
AssertEqualsTable Add XML column comparison using convertion to NVARCHAR(MAX)
AssertNotEqualsString Same as AssertNotEquals, but for NVARCHAR(MAX)
FakeTable Add @NotNulls optional parameter to preserve NOT NULLs
SpyProcedure Add @CatchExecutionTimes optional parameter to catch execution times in _SpyProcedureLog

tSQLt-edge can operate on different database, same server:

Stored procedure with external objects support
ApplyConstraint
ApplyIndex
ApplyTrigger
AssertEmptyTable
AssertEqualsTable
AssertEqualsTableSchema
AssertObjectDoesNotExists
AssertObjectExists
FakeFunction
FakeTable
RemoveObject
RemoveObjectIfExists
SpyProcedure