私が見つけた唯一の回避策は、.NETFramework1.1で使用されていたものです。
はInternalsVisibleToAttribute
.NET2.0Visual Basicでは使用できないため、私が見つけた唯一の回避策は、ライブラリ自体と同じプロジェクト内にテストを含めることです。その上、いくつかのさらなる作業を達成する必要があります。
- 「テスト」と呼ばれる新しいコンパイルCONFIGを自分で作成します(ここで「リリース」/「デバッグ」を選択できます)。
- プロジェクト内に「Tests」という名前の新しいフォルダを作成します。
- フレンド(C#の内部)メンバーをテストするための新しいクラスを追加します。
- このクラス内のコードの最初の行は次のようになります
#if CONFIG = "Tests" then ... #end if
。
- このコンパイラIFディレクティブの間にコードを配置します。
たとえば、次のFriendクラスがある場合:
Friend Class MyFactory
Friend Property Property1 As Object
Get
Return _field1
End Get
Set (ByVal value As Object)
_field1 = value
End Set
End Property
Friend Sub SomeSub(ByVal param1 As Object)
' Processing here...
End Sub
End Class
次に、このクラスを.NET 2.0 Visual Basicでテストする場合は、クラスが配置されているのと同じプロジェクト内にテストクラスを作成する必要がありMyFactory
ます。このクラスは次のようになります。
#If CONFIG = "Tests" Then
Imports NUnit.Framework
<TestFixture()> _
Public Class MyFactoryTests
<Test()> _
Public Sub SettingProperty1Test
' Doing test here...
End Sub
End Class
#End If
「テスト」CONFIGが選択されている場合にのみコンパイルしてこのクラスを含めるようにコンパイラに指示するコンパイラ指令があるため、「デバッグ」モードまたは「リリース」モードではこのクラスを取得できません。このクラスはライブラリの一部ではありません。これは、ライブラリを不必要に汚染しないためです。これにより、とにかくFriendクラスをテストできます。
これは、Visual Basic.NET2.0でこの問題を回避するために私が見つけた最も賢い方法です。