C#stubbing.每个可测试对象的接口?

C#stubbing.每个可测试对象的接口?,第1张

概述我已经看到了关于’如何存根你的课程以便你可以控制SUT内发生的事情’的多个答案. 他们说一件事: 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. 我已经看到了关于’如何存根你的课程以便你可以控制SUT内发生的事情’的多个答案.

他们说一件事:

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    }}
解决方法 是的,不是.为了存根依赖,你需要某种抽象,但这主要是因为模拟框架 work(不是全部,自然).

考虑简单的例子.你测试A类,它依赖于B类和C类.对于A的单元测试来说,你需要模拟B和C – 你需要IB和IC(或基类/ w虚拟成员).你需要IA吗?不,至少不适合这个测试.除非A成为对其他类的依赖,否则不需要在接口/基类后面抽象它.

抽象很棒,因为它可以帮助您构建丢失耦合的代码.您应该抽象您的依赖项.但是,在实践中,某些类不需要被抽象,因为它们服务于顶层/层次结构/根角色,并且不在其他地方使用.

总结

以上是内存溢出为你收集整理的C#stubbing.每个可测试对象的接口?全部内容,希望文章能够帮你解决C#stubbing.每个可测试对象的接口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1236708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存