使用NUnit测试一个属性是否为只读

本文关键字:属性 一个 是否 只读 NUnit 测试 使用 | 更新日期: 2023-09-27 18:15:13

我在测试的类上有一个只读属性。

    public string ReadOnlyProperty
    {
        get { return _readOnlyProperty; }
    }
是否有一种方法来编写一个NUnit测试,以确保该属性是只读的?我想做这件事会让你感到惊讶吗?在我看来,添加测试来确保只读属性保持只读,除非经过深思熟虑的决定来改变它们,这与任何其他行为一样重要。

提前感谢您的反馈

使用NUnit测试一个属性是否为只读

在我看来,添加测试来确保只读属性保持只读,除非经过深思熟虑的决定来改变它们,这与任何其他行为一样重要。

我同意,但是我敢说单元测试是错误的。原因:

单元测试通常用于测试代码的动态方面,即它的运行时行为。另一方面,您正在寻找一种方法来测试代码的静态(编译时或设计时)方面。在我看来,像FxCop或NDepend这样的工具在这种情况下更合适。(关于这些特定的工具是否合适,我可能是错误的,因为我自己也不太了解它们。)

话虽如此,正如您已经从前面的答案中了解到的那样,您可以使用反射来执行此操作:

typeof(SomeType).GetProperty("ReadOnlyProperty").CanWrite == false

您应该能够使用反射(特别是PropertyInfo. properties)。