2009-11-09 5 views
1

리플렉션 (C# 사용)을 사용하여 추상 클래스의 전용 메서드를 테스트하려면 어떻게해야합니까? 나는 특히 this thread에있는 코드를 적용하는 데 관심이 있습니다.리플렉션을 사용하여 추상 클래스의 개인 메서드 테스트

처음에는 개인 코드를 테스트하는 원칙에 대한 토론이있었습니다 (일반적으로하지 말아야합니다 !!). 나는 여러 가지 이유로 나의 상황에 대해 이미 그렇게하기로 결정 했으므로 그러한 논의를 반복하지 않겠습니다. 다른 SO 스레드 (예 : Q # 1583363 및 1506427)가 자세히 논의합니다. 감사합니다. .

+0

답장을 보내 주셔서 감사합니다. –

답변

5

정의에 따르면 추상 클래스는 인스턴스화 할 수 없으므로 직접 테스트 할 수 없습니다. (TypeMock과 같은 조롱 프레임 워크 중 하나를 사용할 수 있습니다. 그렇지 않으면 추상 클래스에서 상속 한 구체적인 클래스를 만들어 테스트 용으로 사용해야합니다.

1

VS2008을 사용하는 경우 올바른 개인 방법을 클릭하지 않고 선택하면 단위 테스트를 만들 VS 당신이 그 개인 방법을 확인하고 실행할 수 있도록하는 YourAbstractClass_Accessor 클래스를 생성합니다

참고 :.. 필요 추가 조롱 프레임 워크를

0

당신이 할 수있는이. , 이것은 반사는 아니지만 누군가에게 도움이 될 수 있습니다.

var concreteClass = new concreteClass(); 
var po = new PrivateObject(concreteClass, new PrivateType(typeof(AbstractClass))); 
Object[] args = new object[] {...}; 
po.Invoke("PrivateMethod", args); 
관련 문제