C# 使用反射测试抽象类的私有方法
如何使用反射(使用C#)测试抽象类的私有方法?我特别感兴趣的是修改中的代码 我知道关于测试私有代码的原则的讨论(一般不应该!!)。出于各种原因,我已经决定这样做,所以我们不要重复这些讨论。其他SO线程(如Q#1583363和1506427)详细讨论了它们。C# 使用反射测试抽象类的私有方法,c#,reflection,tdd,C#,Reflection,Tdd,如何使用反射(使用C#)测试抽象类的私有方法?我特别感兴趣的是修改中的代码 我知道关于测试私有代码的原则的讨论(一般不应该!!)。出于各种原因,我已经决定这样做,所以我们不要重复这些讨论。其他SO线程(如Q#1583363和1506427)详细讨论了它们。 谢谢。根据定义,抽象类不能实例化,所以您不能直接测试它。您可以使用其中一个模拟框架(如。否则,您需要创建一个从抽象类继承的具体类,并将其用于测试。根据定义,抽象类无法实例化,因此无法直接测试。您可以使用其中一个模拟框架(类似。否则,您需要创建
谢谢。根据定义,抽象类不能实例化,所以您不能直接测试它。您可以使用其中一个模拟框架(如。否则,您需要创建一个从抽象类继承的具体类,并将其用于测试。根据定义,抽象类无法实例化,因此无法直接测试。您可以使用其中一个模拟框架(类似。否则,您需要创建一个从抽象类继承的具体类,并将其用于测试。如果您使用VS2008,则只需右键单击您的私有方法并选择create unit test即可。VS将创建一个YourAbstractClass\u访问器类,允许您查看和运行该私有方法
注意:无需额外的模拟框架。如果您使用VS2008,只需右键单击您的私有方法并选择创建单元测试即可。VS将创建一个YourAbstractClass\u访问器类,允许您查看并运行该私有方法
注意:不需要额外的模拟框架。您可以这样做,但这不是反射,可能对某些人有帮助
var concreteClass = new concreteClass();
var po = new PrivateObject(concreteClass, new PrivateType(typeof(AbstractClass)));
Object[] args = new object[] {...};
po.Invoke("PrivateMethod", args);
你可以这样做,但这不是反思,可能对某些人有所帮助
var concreteClass = new concreteClass();
var po = new PrivateObject(concreteClass, new PrivateType(typeof(AbstractClass)));
Object[] args = new object[] {...};
po.Invoke("PrivateMethod", args);