私の最近の質問:ユニット テストのベスト プラクティス? / テスト中の VBNET 2.0 の C# InternalsVisibleTo() 属性? 、InternalsVisibleToAttribute について質問していました。
使用方法に関するドキュメントを読みましたが、すべて問題なく理解できました。ただし、テスト プロジェクトからクラス Groupe をインスタンス化できません。
テスト アセンブリから、ラッパー アセンブリで内部クラスをインスタンス化できるようにしたいと考えています。
どんな助けでも大歓迎です!
編集#1
型をインスタンス化しようとしたときに発生するコンパイル時エラーは次のとおりです。
Erreur 2 'Carra.Exemples.Blocs.ActiveDirectory.Groupe' n'est pas accessed dans ce contexte, car il est 'Private'. C:\Open\Projects\Exemples\Src\Carra.Exemples.Blocs.ActiveDirectory\Carra.Exemples.Blocs.ActiveDirectory.Tests\GroupeTests.vb 9 18 Carra.Exemples.Blocs.ActiveDirectory.Tests
(これは、私のタイプはプライベートであるため、このコンテキストではアクセスできないことを示しています。) しかし、それは Friend (内部) です!
編集#2
以下は、Public インターフェイス IGroupe を実装する Groupe クラスに対して提案されているコードの一部です。
#Region "Importations"
Imports System.DirectoryServices
Imports System.Runtime.CompilerServices
#End Region
<Assembly: InternalsVisibleTo("Carra.Exemples.Blocs.ActiveDirectory.Tests")>
Friend Class Groupe
Implements IGroupe
#Region "Membres privés"
Private _classe As String = "group"
Private _domaine As String
Private _membres As CustomSet(Of IUtilisateur)
Private _groupeNatif As DirectoryEntry
#End Region
#Region "Constructeurs"
Friend Sub New()
_membres = New CustomSet(Of IUtilisateur)()
_groupeNatif = New DirectoryEntry()
End Sub
Friend Sub New(ByVal domaine As String)
If (String.IsNullOrEmpty(domaine)) Then Throw New ArgumentNullException()
_domaine = domaine
_membres = New CustomSet(Of IUtilisateur)()
_groupeNatif = New DirectoryEntry(domaine)
End Sub
Friend Sub New(ByVal groupeNatif As DirectoryEntry)
_groupeNatif = groupeNatif
_domaine = _groupeNatif.Path
_membres = New CustomSet(Of IUtilisateur)()
End Sub
#End Region
そして、それを使用しようとするコード:
#Region "Importations"
Imports NUnit.Framework
Imports Carra.Exemples.Blocs.ActiveDirectory
#End Region
<TestFixture()> _
Public Class GroupeTests
<Test()> _
Public Sub CreerDefaut()
Dim g As Groupe = New Groupe()
Assert.IsNotNull(g)
Assert.IsInstanceOf(Groupe, g)
End Sub
End Class
編集#3
くそ!インポート リージョンにアセンブリをインポートしていないことに気付きました。
いいえ、何も解決しませんでした=(
ありがとう!