在Java中,您可以像这样调用私有方法:
Method m = obj.getClass().getDeclaredMethod("foo", null);
m.setAccessible(true);
m.invoke("bar");
C#中的等效项是什么?我需要在单元测试中调用私有方法。
答案 0 :(得分:1)
如果有权访问MSTest Framework,则可以创建一个PrivateObject实例,该实例是一个包装器,可用于访问对象实例的私有方法和字段。
您可以使用PrivateObject.Invoke()方法从有问题的对象中调用私有方法。
作为旁注,有时必须访问私有方法才能进行单元测试,这被认为是不好的做法。我知道这并不总是可能的,但是您也应该考虑重新评估代码体系结构,使其对UnitTest更友好,从而不需要这种解决方法。