Unit testing 具有集成单元测试的调用层次结构
我使用VS2012单元测试进行集成测试。我的大型对象模型是直接针对SQL数据库编写的。我知道,我知道,但事实就是这样。这不是一个小项目。设计中存在一些问题,但我们将继续讨论实际问题 是否有更好的测试资源管理器允许我根据SQL存储过程名称、它调用的函数(嵌套测试)和调用它的函数有效地对测试进行分组。以及显示NCrunch类型代码覆盖率 这是我刚刚编写的一些代码的一个陈腐、可怕但有效的例子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)
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团队