가장 최근의 질문 : Unit Testing Best Practice?/C# InternalsVisibleTo() attribute for VBNET 2.0 while testing?, 나는 InternalsVisibleToAttribute에 대해 질문하고있었습니다.InternalsVisibleToAttribute를 사용하여 단위 테스트를 수행하려면 /out:filename.ext를 사용하여 컴파일해야합니까?
사용 방법에 대한 설명서를 읽었으며 모든 것이 잘되고 이해되었습니다. 그러나 테스트 프로젝트에서 Groupe 클래스를 인스턴스화 할 수 없습니다.
테스트 어셈블리의 래퍼 어셈블리에서 내부 클래스를 인스턴스화 할 수 있기를 원합니다.
도움을 주시면 감사하겠습니다.
편집 # 1
여기내 유형의 인스턴스를 시도 할 때 얻을 컴파일 타임 오류입니다 :
Erreur 2 'Carra.Exemples.Blocs.ActiveDirectory.Groupe을 '접근 할 수있는 교통 수단, 개인 정보' C : \ 열기 \ 프로젝트 \이 Exemples \ SRC가 Carra.Exemples.Blocs.ActiveDirectory가 Carra.Exemples.Blocs.ActiveDirectory.Tests가 GroupeTests.vb 9 18 Carra.Exemples.Blocs.ActiveDirectory.Tests
(이 말한다 \ \ \ 개인적인 이유로이 유형에서는 내 유형에 액세스 할 수 없습니다.)하지만 친구 (내부)입니다!
편집 # 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
젠장! 수입 지역에 수입품을 가져 오지 못하고 있음을 눈치 챘습니다.
아니는 아무것도 해결되지 않았다 = (
감사
어떤 오류가 발생하고 있습니까? –
오류가 없습니다. IntelliSense 내 유형을 단순히 인스턴스화 할 수 없습니다. –
테스트 프로젝트에서 인스턴스화 할 유형이 포함 된 프로젝트를 참조합니까? 내부가 없어도 방문 할 수있는 인텔리 센스의 유형을보아야합니다. 사용하려고하면 오류가 발생합니다. –