C#:使用实现私有接口的对象参数测试方法
Posted
技术标签:
【中文标题】C#:使用实现私有接口的对象参数测试方法【英文标题】:C#: test a method with an object parameter implementing a private interface 【发布时间】:2015-11-22 08:18:35 【问题描述】:我的第一个项目有一个方法,该方法返回一个模型对象实例,该模型对象实例是用一个继承模型的私有类 PrivateModel 和一个私有接口 IFoo 实现的。
示例:
项目1:
public class Model
private interface IFoo
private class PrivateModel : Model, IFoo
// a sample class with the returning method
public class Bar
public static Model CreateModelInstance()
return new PrivateModel();
// code...
项目2:
// get model instance
var model = Bar.CreateModelInstance(); // return a Model
第二个项目使用模型参数调用方法“Act”,但 Act 的实现测试模型是否为 PrivateModel(使用 IFoo 实现)。
项目1:
public class Bar
// code...
public static bool Act(Model model)
// sample logic
return model is IFoo;
现在的问题:
因为我必须测试一个执行对 Act 方法的调用的方法(它是静态的),并且我不能模拟它,所以我必须构建一个实现 IFoo 的对象(即私有)。我可以在测试项目(第三个项目)中实现类似于TestClass: IFoo
的类,还是必须使用从 Project1 返回的模型?
【问题讨论】:
您的代码必须有更多内容,因为那甚至无法编译。请提供一个简短但完整的示例来说明问题。 【参考方案1】:您不能在定义接口的程序集/类之外实现私有接口。
要么重新设计代码以使其更具可测试性,要么使用从 Project1 返回的模型(或任何创建实现正确接口的模型)..
您的情况实际上可能是私有接口有用的罕见情况之一 - 当您由于某种原因无法密封实现类时,请确保非常严格的对象创建规则。它是否对您的情况有用 - 您的电话。
【讨论】:
以上是关于C#:使用实现私有接口的对象参数测试方法的主要内容,如果未能解决你的问题,请参考以下文章