好的,我刚得到一个任务,需要对一个有私有构造函数的类执行单元测试。
现在当所有方法都是非静态时,我该如何进行单元测试而不初始化类呢?
有没有办法可以对一个有私有构造函数的类进行单元测试(不使用反射)?
好的,我刚得到一个任务,需要对一个有私有构造函数的类执行单元测试。
现在当所有方法都是非静态时,我该如何进行单元测试而不初始化类呢?
有没有办法可以对一个有私有构造函数的类进行单元测试(不使用反射)?
如果您无法将类设置为公共的,仍然可以通过以下方式轻松创建其实例来测试它:
var anInstance = (YourPrivateClass)Activator.CreateInstance(typeof(YourPrivateClass), true);
这将为您提供一个类的实例,然后您可以填充它。
另一个有用的测试方法是,如果您有内部方法(不是私有方法),您可以通过使内部可见来访问它们以供测试类使用。您可以在具有内部方法的类的assemblyinfo.cs中添加此行:
[assembly: InternalsVisibleTo("YourSolution.Tests")]
new
。 - JAlex您应该通过公共API进行测试--必须有某种方式实例化和使用要测试的类。
它可能是单例模式,你不希望该类有公共构造函数。 使用以下装饰器修饰构造函数: [ExcludeFromCodeCoverage]
单元测试通常编写和运行以确保代码符合其设计并按预期行为。
创建一个非静态
类,您无法创建实例,即仅限私有构造函数,可能永远没有用处,换句话说,它永远不是可单元测试的
。
为了进行单元测试: