たとえば、テスト対象となる、こんなメソッドがあった場合。(ルート名前空間は "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 というクラスがあるようなので、それを使うと呼び出せるようです。
リフレクションのラッパー的な感じなので、メソッド名を文字列で渡す必要がある(=インテリセンスは効かない)のがいまひとつなところですが、リフレクションを生で呼び出すよりは、はるかに楽に書けます。