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

你能看到我在这里做什么吗?!这是一个很小的例子。当我更改存储过程时,我可以快速找到“Calls ...”,然后运行使用该过程的所有测试。真是一团糟,有没有更好的解决方案(不涉及代码重组或编写我自己的测试资源管理器)?

注意:我故意不使用 ,TestPropertyAttribute因为它不会在测试资源管理器中分组两次。所以它只会显示在属性“组”之一中。

4

1 回答 1

1

In VS 2012 quarterly update1 (ref http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/26/visual-studio-and-team-foundation-server-2012-update-1-now-available.aspx ), we added group by traits support which allows you to group by TestCategory.

In your case, tests can potentially shown in more than one categories (which I believe is what you're looking for!).

HTH Patrick MSFT VS-ALM team.

于 2013-01-24T18:26:08.467 回答