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

私がここで何をしているのか分かりますか?! そして、これは小さな小さな例です。sproc を変更すると、"Calls ..." をすばやく見つけて、そのプロシージャを使用するすべてのテストを実行できます。混乱しています。より良い解決策はありますか (コードの再構築や独自のテスト エクスプローラーの作成は必要ありません)。

注:TestPropertyAttributeはテスト エクスプローラーで 2 回グループ化されないため、意図的に使用していません。したがって、プロパティ「グループ」の 1 つにのみ表示されます。

4

1 に答える 1

1

VS 2012 四半期ごとの更新 1 (参照http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/26/visual-studio-and-team-foundation-server-2012-update-1-now-available .aspx )、TestCategory によるグループ化を可能にする特性サポートによるグループ化を追加しました。

あなたの場合、テストは潜在的に複数のカテゴリに表示される可能性があります (これがあなたが探しているものだと思います!)。

HTH パトリック MSFT VS-ALM チーム。

于 2013-01-24T18:26:08.467 に答える