如何NUnit测试方法的属性是否存在

Joh*_*n E 9 c# attributes nunit

   public interface IMyServer
    {
        [OperationContract]
        [DynamicResponseType]
        [WebGet(UriTemplate = "info")]
        string ServerInfo();
    }
Run Code Online (Sandbox Code Playgroud)

如何编写NUnit测试来证明C#接口方法是否[DynamicResponseType]设置了属性?

Mar*_*ell 18

就像是:

Assert.IsTrue(Attribute.IsDefined(
            typeof(IMyServer).GetMethod("ServerInfo"),
            typeof(DynamicResponseTypeAttribute)));
Run Code Online (Sandbox Code Playgroud)

您还可以执行涉及泛型和委托或表达式(而不是字符串"ServerInfo")的操作,但我不确定它是否值得.

用于[WebGet]:

WebGetAttribute attrib = (WebGetAttribute)Attribute.GetCustomAttribute(
    typeof(IMyServer).GetMethod("ServerInfo"),
    typeof(WebGetAttribute));
Assert.IsNotNull(attrib);
Assert.AreEqual("info", attrib.UriTemplate);
Run Code Online (Sandbox Code Playgroud)

  • 完美,谢谢。还有一项……有没有办法测试 [WebGet(UriTemplate = "info")] 属性 UriTemplate 是否设置为“info”? (2认同)