나는 약간의 Test-First 개발을 시도하고 있으며 내 클래스가 속성으로 표시되어 있는지 확인하려고합니다.
[SubControllerActionToViewDataAttribute]
public class ScheduleController : Controller
클래스에 해당 속성이 할당되어 있는지 단위 테스트하려면 어떻게해야합니까?
나는 약간의 Test-First 개발을 시도하고 있으며 내 클래스가 속성으로 표시되어 있는지 확인하려고합니다.
[SubControllerActionToViewDataAttribute]
public class ScheduleController : Controller
클래스에 해당 속성이 할당되어 있는지 단위 테스트하려면 어떻게해야합니까?
답변:
확인
Attribute.GetCustomAttribute(typeof(ScheduleController),
typeof(SubControllerActionToViewDataAttribute))
null ( Assert.IsNotNull
또는 유사)이 아님
( IsDefined
대부분 내가 속성의 일부 속성을 확인하고 싶기 때문입니다 ....)
일반적으로 클래스의 속성을 확인하는 것과 동일합니다.
다음은 몇 가지 샘플 코드입니다.
typeof(ScheduleController)
.IsDefined(typeof(SubControllerActionToViewDataAttribute), false);
나는 많은 경우에 단위 테스트에서 속성의 존재를 테스트하는 것이 잘못되었다고 생각합니다. MVC contrib의 하위 컨트롤러 기능을 사용하지 않았기 때문에이 경우에 적절한 지 언급 할 수 없습니다.
이것에 제네릭을 사용할 수도 있습니다.
var type = typeof(SomeType);
var attribute = type.GetCustomAttribute<SomeAttribute>();
이렇게 typeof(...)
하면 코드를 더 깔끔하게 만들 수있는 다른 .
using
) 어떤 오류가 발생합니까?
GetCustomAttribute<SomeAttribute>
방법은 .NET 4.5에서 사용 가능한이고 모든 것이 분명 해졌다 그래서 내 IDE가 3.5로 설정