Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用反射测试抽象类的私有方法_C#_Reflection_Tdd - Fatal编程技术网

C# 使用反射测试抽象类的私有方法

C# 使用反射测试抽象类的私有方法,c#,reflection,tdd,C#,Reflection,Tdd,如何使用反射(使用C#)测试抽象类的私有方法?我特别感兴趣的是修改中的代码 我知道关于测试私有代码的原则的讨论(一般不应该!!)。出于各种原因,我已经决定这样做,所以我们不要重复这些讨论。其他SO线程(如Q#1583363和1506427)详细讨论了它们。 谢谢。根据定义,抽象类不能实例化,所以您不能直接测试它。您可以使用其中一个模拟框架(如。否则,您需要创建一个从抽象类继承的具体类,并将其用于测试。根据定义,抽象类无法实例化,因此无法直接测试。您可以使用其中一个模拟框架(类似。否则,您需要创建

如何使用反射(使用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);