2013-02-21 15 views
4

미리 답변 해 주셔서 감사합니다. 난 그냥 단위 테스트 asp.net mvc 웹 응용 프로그램에서 파고 시작했습니다.모든 ASP.NET MVC 컨트롤러가 기본 컨트롤러를 상속하는지 확인하기위한 단위 테스트 작성

저는 컨트롤러가 거의 없으며이 컨트롤러는 모두 BaseController (이 BaseController는 메뉴, 테넌트 체크 등을 담당합니다)로부터 상속받습니다. 모든 컨트롤러를 BaseController에서 상속 받는지 테스트 할 수있는 방법이 있는지 알고 싶었습니다.

답변

4

Visual Studio의 코드 분석 기능 (일명 "FxCop")과 같이 정적 분석에 더 적합한 것처럼 들립니다. 하지만 코드 분석 규칙을 작성한 적이 있습니다. 머리카락이 가득차면 머리를 다 쓰지 않는 한 권하고 싶지 않습니다. 머리카락을 모두 내고 싶습니다! 그래서 다시 단위 테스트에

:

당신의 단위는 전략 컨트롤러 어셈블리에있는 모든 컨트롤러 유형을 찾아 그들이 올바른 기본 클래스를 가지고 있는지 확인하는 것입니다 테스트합니다. 다음은 몇 가지 의사 코드입니다.

Type[] allTypes = typeof(SomeTypeInTheAssembly).Assembly.GetExportedTypes(); 
Type[] allControllerTypes = allTypes.Where(
    t => typeof(IController).IsAssignableFrom(t)); 
Type[] allControllerTypesExceptBaseClass = allControllerTypes.Except(
    t => t == typeof(BaseController); 

// Assert that all controllers derive from BaseController 
Assert.True(allControllerTypesExceptBaseClass.All(
    t => typeof(BaseController).IsAssignableFrom(t)) 
+0

감사합니다. 이것이 올바른 길을 찾는데 도움이되었습니다. (플러스 - 코드 분석에 대해 배웠습니다. – praveensewak