testing一个类是否有一个属性?

我试图做一点testing优先发展,我试图validation我的类标记了一个属性:

[SubControllerActionToViewDataAttribute] public class ScheduleController : Controller 

我如何testing这个类是否有分配给它的属性?

检查一下

 Attribute.GetCustomAttribute(typeof(ScheduleController), typeof(SubControllerActionToViewDataAttribute)) 

不为空( Assert.IsNotNull或类似)

(我使用这个而不是IsDefined的原因是大多数时候我想validation属性的一些属性太….)

你通常会检查一个类的属性。

这是一些示例代码。

 typeof(ScheduleController) .IsDefined(typeof(SubControllerActionToViewDataAttribute), false); 

我认为在许多情况下,在unit testing中testing属性的存在是错误的。 因为我没有使用MVC的贡献的子控制器function,我不能评论是否适合在这种情况下。

对此也可以使用generics:

 var type = typeof(SomeType); var attribute = type.GetCustomAttribute<SomeAttribute>(); 

这样你就不需要另一种types的typeof(...) ,这可以使代码更清洁。

我知道这个线程真的很老,但如果有人偶然发现,你可能会发现Fluentassertions项目对于做这种断言非常方便。

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