他们说一件事:
解决方法 是的,不是.为了存根依赖,你需要某种抽象,但这主要是因为模拟框架 work(不是全部,自然).Create an interface and inject that interface using dependency injection and create a stub using that same interface that you then inject into the SUT.
但是,我在以前的工作场所学到了什么:
If you unit test,you test all classes/functionality.
这是否意味着对于每个具有特定功能布局的类,您必须创建一个接口?
这意味着类/文件的数量几乎是两倍.
如下面的例子所示,这是“走的路”还是我在单元测试过程中遗漏了什么?
作为一个说明:
我正在使用VS2012 Express.这意味着没有’Faker’框架.我正在使用’标准’VS2012单元测试框架.作为一个非常非常简单的例子,它允许我将传递给SUT的每个接口存根.
IFoo.cs
public interface IFoo{ string Getname();}Foo.cs
public class Foo : IFoo{ public string Getname() { return "logic goes here"; }}Ibar.cs:
public interface Ibar : IFoo{ IFoo GetFoo();}bar.cs:
public class bar : Ibar{ public string Getname() { return "logic goes here"; } public IFoo GetFoo() { return null; // some instance of IFoo }}IBaz.cs:
public interface IBaz{ Ibar Getbar();}Baz.cs:
public class Baz{ public Ibar Getbar() { return null; // some instance of Ibar }}
考虑简单的例子.你测试A类,它依赖于B类和C类.对于A的单元测试来说,你需要模拟B和C – 你需要IB和IC(或基类/ w虚拟成员).你需要IA吗?不,至少不适合这个测试.除非A成为对其他类的依赖,否则不需要在接口/基类后面抽象它.
抽象很棒,因为它可以帮助您构建丢失耦合的代码.您应该抽象您的依赖项.但是,在实践中,某些类不需要被抽象,因为它们服务于顶层/层次结构/根角色,并且不在其他地方使用.
总结以上是内存溢出为你收集整理的C#stubbing.每个可测试对象的接口?全部内容,希望文章能够帮你解决C#stubbing.每个可测试对象的接口?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)