我用VS2012單元測試集成測試。我的龐大而龐大的對象模型是直接針對SQL數據庫編寫的。我知道,我知道,但事實就是如此。這不是一個小項目。有一些問題與設計,但我們會繼續前進,以實際問題...與整合單元調用層次測試
有沒有更好的測試資源管理器,可以讓我有效地組我的測試通過SQL存儲過程的名稱,功能,它調用(嵌套測試)以及調用它的函數。以及顯示NCrunch類型代碼覆蓋率。
的一些代碼,我只是做了一個陳腐的和可怕的,但有效的例子。
Stored Procedures: GetUser (@UserID)
GetPermissions(@UserID, @Element)
類用戶:
Public Function GetUserFromDb(userId As Integer) As User
'... sql command etc for GetUser
FillUserFromReader(myUserInstance, myDataReader)
End Function
Public Shared Function FillUserFromReader(instance As User, r As SqlDataReader)
instance.ID = CStr(r("ID"))
instance.Name = CStr(r("Name"))
instance.Initials = CStr(r("Initials"))
End Function
另一個叫Permissions類...
'Returns both permission and user on same row...
Public Function GetPermissionsFromDb(userId As Integer) As UserPermission
'... sql command for GetPermissions
'use similar FillPermissionsFromReader as above
myPermissionsInstance.User = New User()
User.FillUserFromReader(myPermissions.User, myDataReader)
End Function
我的測試看起來像:
<TestCategory("Runs GetUserFromDb"),
TestCategory("Calls GetUser"),
TestCategory("Runs User.FillUserFromReader")> 'sproc then .net category
Public Sub GetUserTest()
Dim u = User.GetUser(1)
Assert.IsNotNull(u) 'etc
Assert.IsTrue(u.Name = "Tom")
End Sub
<TestCategory("Calls GetPermissions"),
TestCategory("Runs Permissions.GetPermissionsFromDb"),
TestCategory("Runs Permissions.FillPermissionsFromReader")
TestCategory("Runs GetUserFromDb"),
TestCategory("Calls GetUser"),
TestCategory("Runs User.FillUserFromReader")> 'sproc then .net category
Public Sub GetPermissionTest()
Dim p = Permissions.GetPermissions(1)
Assert.IsNotNull(p) 'etc
Assert.IsTrue(p.User.Name = "Tom")
End Sub
你能明白我的」在這裏做?!這是一個微小的例子。當我更換存儲介質時,我可以快速找到「調用...」,然後運行所有使用該過程的測試。這是一個混亂,是否有更好的解決方案(不涉及代碼重組或編寫我自己的測試瀏覽器)?
注:我故意不使用TestPropertyAttribute
,因爲它在測試資源管理器沒有組的兩倍。所以它只會顯示在其中一個屬性「組」中。