2017-12-21 3 views
1

Wie ich die Diskussion in diesem link gelesen habe, habe ich bereits eine Idee, wie man denselben Testfall mit unterschiedlichem Parameterwert nennt. Wenn ich jedoch tSQLt.TestResult-Tabelle anschaue, habe ich nur den Datensatz des letzten Laufs. Der folgende Pseudocode repräsentiert das Szenario.Gleicher Testfall, anderer Parameterwert

EXEC tSQLt.Run 'Main_SP';

--Main SP Pseudocode

erstellen Proc Main_SP

Declare @param

Select @param = 1

exec MyTestCase @param

Select @param = 2

exec [email protected]

Select @param = 3

exec MyTestCase @param

Gibt es eine Weise, die ich immer noch die komplette Geschichte in tSQLt.TestResult des gleichen Testfall für andere Parameter sehen?

Antwort

0

Ich denke, was die Antwort, die Sie auf der folgenden verknüpft beschreibt:

Schritt1. Erstellen Sie eine gespeicherte Prozedur, bei der es sich nicht um einen Test handelt, den der tSQLt-Test-Runner ausführt, sondern um die Parameter zu übergeben. Schritt2. Erstellen Sie einen oder mehrere spezifische Testfälle, die tatsächliche Tsqlt-Tests sind, aber unterschiedliche Namen haben.

Dies bietet Ihnen den Vorteil, dass Sie jeden Test für ein bestimmtes Szenario benennen können, aber Sie müssen nicht mehr für jeden Fall einen Testcode schreiben.

exec tSQLt.NewTestClass 'MyTestClass'; 
go; 
-- step1: notice this test does not start with the keyword test so 
-- will not be executed by the test runner 
create procedure [MyTestClass].[GenericTestScenario] 
@param int 
as 
begin 
    -- write you generic test logic and then the assert 
    declare @result int = dbo.yourFunctionUnderTest(@param); 
    exec tSQLt.AssertEquals(@param, @result); 
end 
go 
-- step 2 (another test case) 
create procedure [MyTestClass].[test Specific Scenario 1] 
as 
begin 
    declare @param = 1; 
    exec MyTestClass.GenericTestScenario @param 
end 
go 
-- step 2 (first test case) 
create procedure [MyTestClass].[test Specific Scenario 2] 
as 
begin 
    declare @param = 2; 
    exec MyTestClass.GenericTestScenario @param 
end 
go 

tSQLt.run 'MyTestClass' 
go