내가 이전에 물어 본 this question과 관련하여, 나는 내 단위 테스트로 다시 붙어 있습니다.단위 테스트를 위해 보호 된 메소드에 액세스해야합니까?
현재 내 문제는 클래스의 protected
메소드를 테스트하는 것과 관련이 있습니다.
나는 추상적 클래스가 가진 모든 것을 상속받는 일을 아주 잘 수행하는 모의 클래스 인 ConcreteComponent
을 성공적으로 구현했다.
사실,이 콘크리트 클래스를 내 단위 테스트 파일 안에 만들었습니다. 보호 된 메서드를 테스트하는 유일한 방법은 Private Accessor를 사용하는 것입니다. 그러나 단위 테스트가있는 곳과 동일한 파일에 Private Accessor를 만들 수 없으므로 보호 된 메서드에 액세스 할 수 없습니다.
모의 구체적인 클래스를 다른 네임 스페이스 아래에 별도의 파일에 배치하려고 했으므로 이제 단위 테스트 파일을 사용할 수있는 개인용 액세서를 만들 수 있습니다. 그것은 훌륭하게 작동했지만, 그런 다음 유닛 테스트가있는 동일한 파일 안에이 모의 구체적인 클래스가 필요하다고 생각했습니다.
그래서 지금은 두 가지 질문이 있습니다
1)이 문제에 대한 가능한 해결 방법은 무엇입니까?
2) 유닛 테스트 클래스와 동일한 파일 및 네임 스페이스 내에있는 모의 클래스에 대한 private 접근자를 만들 수없는 이유는 무엇입니까?
"왜 당신이 안되 냐"는 좋은 질문입니다. 너 왜 그럴 수 없어? 정확히 무슨 일이 일어나고 있습니까? – JRoughan
잘 VS2008 그 이유는 무엇이든 나를 허용하지 않습니다. 클래스가 유닛 테스트와 동일한 파일에있을 때 모의 클래스의 이름을 마우스 오른쪽 버튼으로 클릭 할 때 Private Accessor를 만드는 옵션이 없습니다. 그러나 모의 클래스를 별도의 파일에 배치하면 Private Accessor를 만드는 옵션이 나타납니다. – Anthony
아, 그래서 IDE가 당신을 내버려 두지 않습니다. MSTEST 및 자동 생성 접근자를 사용하고 있다는 것을 깨닫지 못했습니다. 이 경우 아래의 Saurabh의 조언을 따르고 공개 인터페이스가 보호 된 코드를 실행하고 있는지 확인합니다. 그렇지 않은 경우, 깨진 경우에도 문제가되는 이유는 무엇입니까? – JRoughan