Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 具有集成单元测试的调用层次结构_Unit Testing_Visual Studio 2012_Integration Testing_Mstest_Code Coverage - Fatal编程技术网

Unit testing 具有集成单元测试的调用层次结构

Unit testing 具有集成单元测试的调用层次结构,unit-testing,visual-studio-2012,integration-testing,mstest,code-coverage,Unit Testing,Visual Studio 2012,Integration Testing,Mstest,Code Coverage,我使用VS2012单元测试进行集成测试。我的大型对象模型是直接针对SQL数据库编写的。我知道,我知道,但事实就是这样。这不是一个小项目。设计中存在一些问题,但我们将继续讨论实际问题 是否有更好的测试资源管理器允许我根据SQL存储过程名称、它调用的函数(嵌套测试)和调用它的函数有效地对测试进行分组。以及显示NCrunch类型代码覆盖率 这是我刚刚编写的一些代码的一个陈腐、可怕但有效的例子 Stored Procedures: GetUser (@UserID)

我使用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
”存储过程然后是.net类别
公共子GetUserTest()
Dim u=User.GetUser(1)
Assert.IsNotNull(u)等
Assert.IsTrue(u.Name=“Tom”)
端接头
'存储过程.net类别
公共子权限测试()
Dim p=权限。GetPermissions(1)
Assert.IsNotNull(p)等
Assert.IsTrue(p.User.Name=“Tom”)
端接头
你能看到我在这里干什么吗?!这是一个很小的例子。当我更改存储过程时,我可以快速找到“调用…”,然后运行使用该过程的所有测试。这真是一团糟,有没有更好的解决方案(不涉及代码重组或编写自己的测试资源管理器)


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

在VS 2012季度更新1(参考)中,我们添加了“按特征分组”支持,允许您按TestCategory分组

在您的情况下,测试可能会显示在多个类别中(我相信这就是您所寻找的!)

嗯 帕特里克 MSFT VS-ALM团队