Private, Internal 및 Friend 메서드의 단위 테스트

일반적으로 private, internal 및 friend로 표시된 메서드는 해당 메서드가 포함된 클래스의 외부에서는 볼 수 없습니다. 그러나 Visual Studio 도구를 사용하면 단위 테스트에서 이러한 메서드에 액세스할 수 있습니다. 이는 단위 테스트 파일이 별개의 클래스인 경우에도 해당됩니다.

이러한 메서드를 허용하기 위해 단위 테스트 파일을 편집해야 할 필요는 없지만 internal 및 friend 메서드의 처리 방식과 관련된 몇 가지 사항을 선택할 수 있습니다. 이 문서에서는 이러한 선택 사항에 대해 설명하고, private, internal 및 friend 메서드를 테스트할 때 프로젝트에서 수행되는 작업에 대해 설명합니다.

참고

단위 테스트를 만드는 방법에 대한 자세한 내용은 기존 코드에 대한 단위 테스트 생성 및 실행을 참조하십시오.

참고

Visual Studio 2010에서는 접근자를 사용하지 않으며 이후 버전의 Visual Studio에도 접근자를 포함하지 않습니다.

Private 메서드

private 메서드에 대한 단위 테스트를 만들면 테스트 프로젝트에 테스트 참조 폴더가 추가되고 이 폴더에 접근자가 추가됩니다. 또한 접근자는 단위 테스트 메서드의 논리에서 참조됩니다.

Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value
Dim target As Form1_Accessor = New Form1_Accessor() ' TODO: Initialize to an appropriate value

이 접근자는 테스트할 코드의 private 메서드를 단위 테스트에서 호출할 수 있게 해 줍니다.

접근자를 수동으로 만들거나 삭제된 접근자를 다시 만들 수 있습니다. 이렇게 하려면 테스트할 코드를 마우스 오른쪽 단추로 클릭하고 전용 접근자 만들기를 가리킨 다음 접근자가 필요한 테스트 프로젝트를 선택합니다.

Internal 또는 Friend 메서드

C#의 internal 메서드나 Microsoft Visual Basic의 friend 메서드에 대한 단위 테스트를 만들 때는 internal 메서드에 액세스하는 데 전용 접근자를 사용해야 하는지 InternalsVisibleToAttribute를 사용해야 하는지를 선택할 수 있는 대화 상자가 나타납니다.

참고

해당 특성이 이미 프로젝트에 추가된 경우에는 이 대화 상자가 나타나지 않을 수 있습니다.

InternalsVisibleToAttribute를 사용하여 internal 메서드에 액세스하도록 선택하면 AssemblyInfo.cs 파일에 이 특성이 추가됩니다. 이 특성은 테스트할 코드의 internal 메서드를 테스트 프로젝트에서 사용할 수 있도록 합니다. 이 옵션을 선택한 각 테스트 프로젝트에 대해 새 특성이 추가됩니다.

전용 접근자를 사용하여 internal 메서드에 액세스하도록 선택하면 이 문서의 앞부분에서 private 메서드에 대해 설명한 것과 동일한 동작이 적용됩니다. 즉, 테스트 프로젝트에 테스트 참조 폴더가 추가되고, 이 폴더에 접근자가 추가되며, 이 접근자는 단위 테스트 메서드의 논리에서 참조됩니다. 이 경우 전용 접근자는 테스트할 internal 메서드와 private 메서드 모두에 액세스할 수 있게 해 줍니다.

프로젝트에 InternalsVisibleToAttribute를 추가하도록 선택한 경우에도 internal 메서드에 대한 단위 테스트를 만들고 해당 메서드에 액세스할 때 이 특성 대신 전용 접근자를 사용하도록 지정할 수 있습니다. 하지만 이 작업은 단위 테스트를 만들 때 수행해야 합니다. 단위 테스트 만들기 대화 상자에서 설정을 클릭합니다. 테스트 생성 설정 대화 상자에서 InternalsVisibleTo 특성 부여 확인란의 선택을 취소합니다.

참고 항목

개념

단위 테스트 분석

단위 테스트와 C++

제네릭 메서드의 단위 테스트