[c#] 클래스에 속성이 있는지 테스트 하시겠습니까?

나는 약간의 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(...)하면 코드를 더 깔끔하게 만들 수있는 다른 .


답변

나는이 쓰레드가 정말 오래 되었다는 것을 알고 있지만 누군가가 우연히 발견하면 유창한 주장 프로젝트가 이런 종류의 주장을 수행하는 데 매우 편리 하다는 것을 알 수 있습니다 .

typeof(MyPresentationModel).Should().BeDecoratedWith<SomeAttribute>();


답변