测试间谍实施之间的差异

时间:2011-01-03 06:06:27

标签: c# java unit-testing testing

我在定义哪两种类的测试加倍时遇到了一些麻烦。 它们都包含(基本)行为。

他们的不同之处在于,真实环境中的第一个不会运行,而第二个会运行(它基本上是一个无用的类,但它会工作!第二个会崩溃)。

他们对我来说都像Test Spies。它们都提供了一种获取Run()方法是否被调用的方法。 (这就是这些课的原因!)。

我不能在所有上下文中使用第二个,因为我不能在所有上下文中仅使用第一个。

我可以将它们重构为一个,但也许在阅读代码时会使事情变得不那么清楚。

class FilterTestSpy : IFilter {
    private bool hasBeenRan = false;

    ...

    public bool HasBeenRan { get { return hasBeenRan; } }

    public void Run() {
        hasBeenRan = true;
    }
}

class FilterTestSpy2: IFilter {
    private bool hasBeenRan = false;

    ...

    public bool HasBeenRan { get { return hasBeenRan; } }

    public void Run() {
        ...some logic...
        hasBeenRan = true;
    }
}

我知道有一些嘲弄的框架,blablabla,这不是我在这里要求的。

谢谢!

1 个答案:

答案 0 :(得分:1)

您是否可以在Run()方法中创建委派的策略?这样你就可以只有一个间谍类,只有一个责任,即告诉方法是否被调用。因此,对于不同的上下文,您可以注入不同的策略。