テストクラスは育ってくると、冗長になるというか、胴長な感じのクラスになる。
そうなると、テストの前提条件でグルーピングしたくなる。

JUnit4であれば、Enclosed テストランナーを使ってこのグルーピングが可能。

Java(JUnit4)だとこうなる。

@RunWith(Enclosed.class)
public class HogeDaoTest {
    public static class データベースが空の場合 {
        @Before
        public void setUp() {
            // データベースが空っぽの前提条件を満たす setUp を書く
        }
        @Test
        public void findAllはゼロ件になる() {}
            :
    }
    public static class データベースにレコード1件ある場合 {
        @Before
        public void setUp() {
            // データベースにレコード1件の前提条件を満たす setUp を書く
        }
        @Test
        public void findAllは1件取得できる() {}
            :
    }
}

そして実は、NUnitでも同様な事が可能だが、JUnitとはやり方が違うし、NUnitでのやり方はググっても見つからないから公開しとく。

上記のコードをVB.NETで起こすと、、、

Public MustInherit Class HogeDaoTest
    Public Class データベースが空の場合 : Inherits HogeDaoTest
        <SetUp()> Public Sub SetUp()
            ' データベースが空っぽの前提条件を満たす setUp を書く
        End Sub
        <Test()> Public Sub FindAllはゼロ件になる()
        End Sub
            :
    End Class
    Public Class データベースにレコード1件ある場合 : Inherits HogeDaoTest
        <SetUp()> Public Sub SetUp()
            ' データベースにレコード1件の前提条件を満たす setUp を書く
        End Sub
        <Test()> Public Sub FindAllは1件取得できる()
        End Sub
            :
    End Class
End Class
こんなふうに継承させると実現できる。簡単(だけど正規のやり方ではないかもしれない)。

TestDriven.NET等を使い、スーパークラスを「テスト実行」すれば、サブクラスすべてのテスト実行が可能だし、サブクラスだけ「テスト実行」ももちろん可能

ちなみに私は、各サブクラス共通のSetUp処理をスーパークラスに記述することをよくやる。

Public MustInherit Class HogeDaoTest
    <SetUp()> Public Overridable Sub SetUp()
        ' データベースが空っぽの前提条件
    End Sub
    Public Class データベースが空の場合 : Inherits HogeDaoTest
        <Test()> Public Sub FindAllはゼロ件になる()
        End Sub
            :
    End Class
    Public Class データベースにレコード1件ある場合 : Inherits HogeDaoTest
        Public Overrides Sub SetUp()
            MyBase.SetUp()
            ' データベースにレコード1件
        End Sub
        <Test()> Public Sub FindAllは1件取得できる()
        End Sub
            :
    End Class
End Class

みんなの何かの糧になれば幸い。