InternalsVisibleTo 특성 설정
업데이트: 2007년 11월
코드에 internal 액세스 한정자(Visual C#) 또는 Friend 액세스 한정자(Visual Basic)가 있는 클래스, 인터페이스 또는 구조체가 들어 있을 수 있습니다. 형식에 이 한정자가 지정되는 이유에는 다음과 같은 두 가지가 있습니다.
해당 형식을 명시적으로 internal로 표시했습니다.
기본적으로 명시적 액세스 한정자가 없는 최상위 클래스, 인터페이스 또는 구조체는 internal로 간주됩니다.
기본적으로 테스트 대상 코드에 있는 private, internal 및 friend 요소는 테스트 코드에 표시되지는 않지만 테스트할 수는 있습니다. 전용 메서드를 테스트하는 방법에 대한 자세한 내용은 방법: 전용 메서드 테스트를 참조하십시오.
Internal 액세스 한정자가 포함된 요소 테스트
internal 형식이 포함된 코드에 대해 단위 테스트 메서드를 생성하면 InternalsVisibleTo 특성을 추가합니다. 대화 상자가 나타날 수 있습니다. 이 대화 상자에는 다음과 같은 질문이 있으며 예 또는 아니요를 선택할 수 있습니다.
Friend 또는 Internal로 표시된 형식에 대해 테스트를 생성하도록 선택했습니다. <프로젝트 이름> 프로젝트에 InternalsVisibleTo 특성을 추가하시겠습니까?
소스 프로젝트에서 강력한 이름 서명을 사용하는 경우 테스트 프로젝트에서도 서명을 사용해야 합니다. 그렇게 하지 않으면 컴파일 오류 메시지가 나타납니다.
이 메시지에서 <project name>은 테스트 대상 코드가 들어 있는 프로젝트를 나타냅니다. 예를 선택하면 테스트 대상 코드의 어셈블리에 InternalsVisibleTo 특성이 표시됩니다. 그러면 해당 어셈블리의 internal 형식이 테스트 프로젝트에 표시됩니다. 이렇게 하면 해당 internal 형식에 대해 단위 테스트를 수행할 수 있습니다.
참고: |
---|
InternalsVisibleTo 특성은 두 가지 형식으로 구현될 수 있습니다. 단순 형식은 액세스 권한을 부여할 어셈블리를 지정하며 복합 형식에는 강력한 이름 서명에 사용되는 공개 키도 포함됩니다. 자세한 내용은 다음 단원을 참조하십시오. |
아니요를 선택하면 테스트 대상 코드의 internal 형식이 private 액세스 한정자가 있는 것처럼 처리됩니다. 이 경우 테스트 생성 프로시저에서 전용 접근자가 만들어지며, 이를 통해 테스트 어셈블리가 해당 형식(내부 및 전용 형식 모두)에 액세스할 수 있습니다. 전용 접근자는 테스트 프로젝트의 테스트 참조 폴더에 있습니다.
InternalsVisibleTo 또는 전용 접근자 중 선택
전용 접근자 어셈블리를 사용하여 전용 멤버와 내부 멤버에 모두 액세스할 수 있습니다. 테스트 대상 코드에 내부 멤버가 있지만 전용 멤버는 없는 경우 테스트 대상 코드에서 InternalVisibleTo 특성을 사용하고 전용 접근자 어셈블리를 만들지 않는 것이 좋습니다. 그러나 코드에 테스트할 전용 멤버와 내부 멤버가 모두 있는 경우에는 두 멤버 모두에 액세스할 수 있는 전용 접근자를 사용합니다. 자세한 내용은 전용 접근자 사용을 참조하십시오.
강력한 이름 서명 요구 사항
InternalsVisibleTo 특성을 추가합니다. 대화 상자에는 강력한 이름 서명에 대한 정보가 들어 있습니다. 즉, 솔루션을 빌드할 때 강력한 이름 서명을 제대로 설정하지 않으면 컴파일러 오류가 발생합니다.
테스트 대상 코드 어셈블리에 대해 강력한 이름 서명을 사용하도록 설정하는 경우에는 테스트 어셈블리에 대해서도 사용하도록 설정해야 합니다. 이 경우 InternalsVisibleTo 특성의 서명된 형식을 사용해야 합니다. 예를 들면 다음과 같습니다.
[InternalsVisibleTo(“OtherAssembly, PublicKey=12435234fsdaf;l457fwi248ew843872r892r”)]
테스트 대상 코드 어셈블리에 대해 강력한 이름 서명을 사용하도록 설정하지 않는 경우에는 테스트 어셈블리에 대해서도 사용하도록 설정하지 않아도 됩니다. 이 경우 InternalsVisibleTo 특성의 서명되지 않은 형식을 사용하면 됩니다.
[InternalsVisibleTo(“OtherAssembly”)]
참고: InternalsVisibleTo 특성을 추가합니다. 대화 상자에서 예를 클릭하면 Visual Studio에서는 InternalsVisibleTo 특성의 단순 형식(공개 키가 없는 형식)을 추가합니다.
테스트 대상 코드 어셈블리를 계측하여 코드 검사 데이터 수집을 사용하도록 설정하는 작업은 강력한 이름 서명에도 영향을 줍니다. 자세한 내용은 어셈블리 계측 및 다시 서명을 참조하십시오.