0

我用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,因爲它在測試資源管理器沒有組的兩倍。所以它只會顯示在其中一個屬性「組」中。

回答