2010-05-13 1 views
3

가장 최근의 질문 : 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

젠장! 수입 지역에 수입품을 가져 오지 못하고 있음을 눈치 챘습니다.

아니는 아무것도 해결되지 않았다 = (

감사

+0

어떤 오류가 발생하고 있습니까? –

+0

오류가 없습니다. IntelliSense 내 유형을 단순히 인스턴스화 할 수 없습니다. –

+0

테스트 프로젝트에서 인스턴스화 할 유형이 포함 된 프로젝트를 참조합니까? 내부가 없어도 방문 할 수있는 인텔리 센스의 유형을보아야합니다. 사용하려고하면 오류가 발생합니다. –

답변