在我最近的问题中:单元测试最佳实践?/ C# InternalsVisibleTo() 属性在测试时用于 VBNET 2.0?,我在问 InternalsVisibleToAttribute。
我已阅读有关如何使用它的文档,一切都很好并且可以理解。但是,我无法从我的测试项目中实例化我的类 Groupe。
我希望能够从我的测试程序集中实例化我的包装程序集中的内部类。
任何帮助表示赞赏!
编辑#1
这是我尝试实例化类型时遇到的编译时错误:
Erreur 2 'Carra.Exemples.Blocs.ActiveDirectory.Groupe' n'est pas access 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
下面是为实现公共接口 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
该死!我刚刚注意到我没有在我的导入区域导入程序集。
不,没有解决任何问题=(
谢谢!