测试类是否有属性?

我正在尝试进行一些 Test-First 开发,并试图验证我的类是否标记了一个属性:

[SubControllerActionToViewDataAttribute]
public class ScheduleController : Controller

我如何进行单元测试,以确定该类是否具有分配给它的属性?

88317 次浏览

与通常检查类上的属性相同。

下面是一些示例代码。

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

我认为在许多情况下,测试单元测试中是否存在属性是错误的。由于我没有使用 MVC 的子控制器功能,我不能评论它是否适合在这种情况下虽然。

检查一下

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

不为空(Assert.IsNotNull或类似)

(我使用它而不使用 IsDefined的原因是,大多数时候我也想验证属性的一些属性... ...)

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

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

在这方面也可以使用泛型:

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

这样,您就不需要另一个 typeof(...),它可以使代码更清晰。