たとえば、テスト対象となる、こんなメソッドがあった場合。(ルート名前空間は "ClassLibrary1" であるとします)
Public Class Class1
Private Function func1(source As Integer(), index As Integer) As Integer
Return source(index)
End Function
End Class
テストはこう書けます。
Imports Microsoft.VisualStudio.TestTools.UnitTesting
<TestClass()> Public Class UnitTest1
<TestMethod()> Public Sub TestMethod1()
Dim source = New Integer() {100, 200, 300}
Dim target = New ClassLibrary1.Class1
Dim po As New PrivateObject(target)
Dim result = po.Invoke("func1", {source, 2})
Assert.AreEqual(result, 300, "テスト")
End Sub
End Class
Microsoft.VisualStudio.TestTools.UnitTesting 名前空間に、PrivateObject というクラスがあるようなので、それを使うと呼び出せるようです。
リフレクションのラッパー的な感じなので、メソッド名を文字列で渡す必要がある(=インテリセンスは効かない)のがいまひとつなところですが、リフレクションを生で呼び出すよりは、はるかに楽に書けます。