我可以断言 C# 方法具有特定属性吗?
Can I assert that a C# method has a certain attribute?
[DummyAttribute]
public void DummyMethod() {
return;
}
我想编写一个 Nunit 测试来断言 DummyMethod 装饰有 DummyAttribute,我可以这样做吗?
是的,有反思。一种可能的解决方案:
var dummyAttribute = typeof(YourClassName)
.GetMethod(nameof(YourClassName.DummyMethod))!
.GetCustomAttributes(inherit: false)
.OfType<DummyAttribute>()
.SingleOrDefault();
Assert.That(dummyAttribute, Is.Not.Null);
这些类型的测试通常有助于定义代码库的功能规范。
@kardo 的代码绝对没问题,似乎也解决了你的问题。
但是,如果有人稍后需要更多描述性单元测试来指定功能规格,那么我建议尝试 fluent assertions。
typeof(YourClassName).GetMethod(nameof(YourClassName.DummyMethod)).Should().BeDecoratedWith<DummyAttribute>();
是的,您可以反映或使用“流畅的断言”包。
或者,由于您已经在使用 NUnit...
Assert.That(typeof(YourClassName).GetMethod(nameof(SomeMethod)),
Has.Attribute(typeof(DummyAttribute)));
[DummyAttribute]
public void DummyMethod() {
return;
}
我想编写一个 Nunit 测试来断言 DummyMethod 装饰有 DummyAttribute,我可以这样做吗?
是的,有反思。一种可能的解决方案:
var dummyAttribute = typeof(YourClassName)
.GetMethod(nameof(YourClassName.DummyMethod))!
.GetCustomAttributes(inherit: false)
.OfType<DummyAttribute>()
.SingleOrDefault();
Assert.That(dummyAttribute, Is.Not.Null);
这些类型的测试通常有助于定义代码库的功能规范。
@kardo 的代码绝对没问题,似乎也解决了你的问题。
但是,如果有人稍后需要更多描述性单元测试来指定功能规格,那么我建议尝试 fluent assertions。
typeof(YourClassName).GetMethod(nameof(YourClassName.DummyMethod)).Should().BeDecoratedWith<DummyAttribute>();
是的,您可以反映或使用“流畅的断言”包。
或者,由于您已经在使用 NUnit...
Assert.That(typeof(YourClassName).GetMethod(nameof(SomeMethod)),
Has.Attribute(typeof(DummyAttribute)));