什么是单元测试范围?

时间:2011-02-27 11:06:45

标签: c# unit-testing moq

我被说服了单元测试的有用性,但我真的不明白这些规则..

如果我有一个与另一个

相关联的课程
public class MyClass
{       
    private SecondClass MySecondClass;

    public MyClass()
    {
        this.MySecondClass = new SecondClass ();
    }
}

该字段是私有的,Myclass有这样的方法:

    public ThirdClass Get()
    {
        return this.MySecondClass.Get();
    } 

我该如何测试?我假设我必须测试MyClass.get()方法是否正在调用MySecondClass.Get()!但我无法模仿SecondClass并将其分配给第一个,因为它是一个私有字段。所以我真的很想知道如何测试它...

由于

1 个答案:

答案 0 :(得分:4)

您无法轻松对此进行单元测试,因为实例化是硬编码的。你可以使用构造函数注入来模拟它:

public class MyClass
{       
    private SecondClass _mySecondClass;

    public MyClass(SecondClass mySecondClass)
    {
        _mySecondClass = mySecondClass;
    }

    public ThirdClass Get()
    {
        return _mySecondClass.Get();
    } 
}

现在,在你的单元测试中,你可以提供你喜欢的这个类的任何实例。这就是控制反转的原理。类不再负责实例化其依赖项,它是传递依赖项的那些类的使用者。