當我在SQL Server 2012上使用TSQLUNIT測試更新/插入存儲過程時,我注意到一些奇怪現象。當我調用執行tsu_RunTests時,我的測試過程運行但出現意外行爲。調用我的原始存儲過程的代碼中的行被執行,但沒有按預期對數據庫表進行實際更新或插入。這種行爲是否有正當理由?或者這是我需要多加關注的錯誤?我注意到,當我在測試過程之外執行相同的原始存儲過程時,它工作正常。使用TSQLUNIT進行SQL單元測試
0
A
回答
0
對於每個存儲過程,可以使用Default參數,並在tsu_RunTests中使用這些存儲過程時將此@IsTest
參數設置爲true。
CREATE PROCEDURE orginal_proc
[email protected]_name
@IsTest BIT = 0
AS
if @IsTest <> 1 Begin
-- Test statements
End Else Begin
-- statements
End
GO
你也可以使用@@NESTLEVEL
做檢查,你的程序直接執行或者由其他程序執行。
CREATE PROCEDURE orginal_proc
[email protected]_name
AS
if @@NESTLEVEL <> 1 Begin
-- Test statements
End Else Begin
-- statements
End
GO
編輯:存儲過程的代碼必須象下面這樣:
If @@NESTLEVEL <> 1 Print 'Befor Update Message'
If @@NESTLEVEL = 1 Begin
Update YourTable
Set ...
End
If @@NESTLEVEL <> 1 Print 'After Update Message'
+0
你有好主意。我所擁有的是我的Original過程中的打印語句,用於在UPDATE語句之前和之後打印一條語句,並且兩條打印語句都隨着消息在消息中顯示而運行。只是實際的更新沒有發生,我想驗證這是預期的而不是某個問題。 – Kobojunkie
+0
@Kobojunkie:請參閱我的編輯。 –
相關問題
- 1. 使用TSQLUnit測試INSTEAD OF觸發器
- 2. 使用QT進行單元測試
- 3. 使用docker進行單元測試
- 4. 使用Cocoapods進行Xcode單元測試
- 5. 使用JMS進行單元測試(ActiveMQ)
- 6. 使用jdeveloper進行單元測試10g
- 7. 使用moment.js進行單元測試
- 8. 使用FluentValidation進行單元測試ServiceStack
- 9. 使用Mockito進行GWTP單元測試
- 10. 使用SimpleHTTPServer進行單元測試
- 11. 使用Cookie進行MVC單元測試
- 12. 使用NSURLConnection進行單元測試
- 13. 使用Robotium進行Android單元測試
- 14. 使用Clojure進行單元測試Java
- 15. 使用GUID進行單元測試
- 16. 使用Mockito進行單元測試
- 17. 使用DateTime進行單元測試
- 18. SpringBoot:使用Cassandra進行單元測試
- 19. 使用Moq進行單元測試
- 20. 使用junit進行單元測試4.10
- 21. 使用Singleton進行單元測試
- 22. 使用MEF2 ExportFactories進行單元測試
- 23. 使用Eclipse進行單元測試 - JUNIT
- 24. 使用ContentProviders進行Android單元測試
- 25. 使用Application.Current.Dispatcher進行單元測試
- 26. 使用V8進行Javascript單元測試
- 27. 使用QVariant進行單元測試
- 28. 使用DI進行單元測試
- 29. 使用IMongoQueryable進行單元測試
- 30. 使用HttpContext.Application進行單元測試
如何檢查數據是否被插入/更新?也許tsqlunit在運行測試後執行自動回滾? –
這是我不確定的。到目前爲止,我還沒有從文檔中看到它這樣做,但想問問是否有人知道這一點。 – Kobojunkie