2010-11-18 3 views
0

C#/VS2008에 콘솔 응용 프로그램을 작성했습니다. 그 안에는 접근성 수정자를 지정하지 않고 선언 된 여러 클래스가 있습니다. Like액세스 할 수없는 오류 : 콘솔 응용 프로그램 NUnit

Namespace MyNamespace 
{ 
    Class MyClass 
    { 
    .. 

    } 
} 

이제 테스트 용으로 새 콘솔 응용 프로그램이 추가되었습니다. 나는 NUnit 프레임 워크 DLL에 대한 참조를 추가했다. 그리고 내 주요 프로젝트 DLL에 대한 참조. 그러나 My TestFixture 클래스에 MyClass 객체를 만들려고하면 "MyNamespace.MyClass가 보호 수준으로 인해 액세스 할 수 없습니다."와 같은 오류가 발생합니다.

클래스를 공용으로 만들어야합니까? 그러나 내 프로젝트가 그것을 감당할 수 없다면 어떨까요? 프로젝트가 그것을 감당할 경우

namespace MyNamespace 
{ 
    public class MyClass 
    { 

    } 
} 

당신이 [InternalsVisibleTo] 속성을 살펴 수 있습니다

답변

4

클래스는 당신이 다른 어셈블리에서 액세스 할 수 있도록하려면 public을 할 필요가있다.

+0

의미 - 공용으로 변경할 수없는 경우 NUnit을 사용하여 응용 프로그램을 전혀 테스트 할 수 없습니까? –

+1

NUnit뿐만 아니라 모든 테스트 프레임 워크와 함께. 당신은 항상 당신의 단위 테스트에서 반사를 사용할 수 있지만 이것은 다리에서 자신을 쏘는 것과 같습니다. 이것은 물론 당신이 당신의 어플리케이션을 단위 테스트 할 수 없다는 것을 의미하지는 않습니다. 이 클래스가 공개되지 않으면 작성자가 현재 어셈블리 외부에서 액세스 할 수 없으려는 의도가 없음을 의미합니다. 이 클래스에 내부적으로 의존하는 공용 메소드를 항상 테스트 할 수 있으며 암묵적으로 테스트 할 수도 있습니다. –

+0

그러면 기본 프로젝트 자체에 테스트 클래스를 가질 수 있습니까? 그러면 시험을 치르는 것은 연습자가 될까요? –

관련 문제