私はSQL単体テストは初めてですが、最初のテストを作成し、これが賢明なテストであることを確認しようとしています. したがって、単純に更新(存在する場合)または挿入(存在しない場合)を行うストアドプロシージャがあります。TSQLUnit を使用して、以下のテストを作成し、spModifyDataというストアド プロシージャをテストしました。このテストの目的は、既存の ID が渡されたときにデータベースに新しいレコードが作成されないことを確認することです。
ALTER PROCEDURE [dbo].[ut_TestspModifyData]
AS
BEGIN
SET NOCOUNT ON;
-- Setup the test conditions by inserting test data
DECLARE
@newidone uniqueidentifier,
@newidtwo uniqueidentifier,
@newidthree uniqueidentifier,
@ExpectedID uniqueidentifier,
@ActualID uniqueidentifier
SET @ActualID = '13E7C741-9A04-4E84-B604-141874A6A9B4'
SET @ExpectedID = '13E7C741-9A04-4E84-B604-141874A6A9B4'
SET @newidone = newID()
SET @newidtwo = newID()
SET @newidthree = newID()
INSERT INTO DataSource( [DataSourcePrimarySource],[DataSourceName],[DataSourceRecordCreateDate]
,[DataSourceStatus] ,[DataSourceIsActive]) VALUES ('PRIMARY SOURCE ONE', 'XYZ', GETDATE() , @newidone, 1)
-- Exercise the test
EXEC spModifyDataSource @ActualID , 'PRIMARY SOURCE ONETWO', 'BBB', @newIDone, 0
-- Assert expectations
IF (@ExpectedID != @ActualID)
EXEC dbo.tsu_Failure 'ModifyData failed.'
-- Teardown
-- Implicitly done via ROLLBACK TRAN
END