在.net项目中,有很多用C#实现的实体。使用的库(saga实体的nservicebus)的要求是所有访问方法都必须声明为公共(public)和虚拟的,否则在部署过程中会失败。
在单元测试阶段检查实体的访问方法是否虚拟是合理的,s.a.部署可能需要很长时间(在被发现之前)
有谁知道一种好方法来检查类中的所有公共(public)方法是否在 nunit 测试中声明为虚拟方法?
最佳答案
我使用相同的测试来验证,游戏引擎包装器将所有公共(public)方法都作为虚拟方法。它使测试变得更加容易,并且可以大大减少反馈时间。我将此类方法放置在特殊类 DesignTests
下,例如,我在其中测试我的项目中是否违反了约定。有些复杂的事情是 FxCop
无法检测到的。您可以看到下面的代码:
[Test]
public void AllPublicMethodsInUnityFacade_ShouldBeVirtual()
{
var allPublicMethods =
typeof(UnityFacade).GetMethods(BindingFlags.DeclaredOnly |
BindingFlags.Instance |
BindingFlags.Public);
Assert.IsTrue(allPublicMethods.All(method => method.IsVirtual),
string.Join(", ", allPublicMethods
.Where(method => !method.IsVirtual)
.Select(method => method.Name))
+ " is not virtual");
}
关于c# - 如何检查一个类的所有公共(public)方法都是虚拟的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358652/