0

我正在开发一个程序来操纵成本历史并最终进行预测。

我面临的问题是我想计算将用于成本历史的修饰符以消除季节差异。我需要两种不同的方法来计算它们,这两种方法几乎相同,除了它将是乘法而不是加法的地方。

一个例子是:

    private void CalculAndSumEveryPeriodeModifier()
    {
        List<double> averages = MovingAverage.Averages;

        for (int i = 0; i < averages.Count; ++i)
        {
            averages[i] = costsList[i + NbPeriode / 2] / averages[i] // Division changed to substraction
            modifiers[((i + NbPeriode / 2) % NbPeriode)] += averages[i];
        }
    }

我尝试了一个抽象类,它有一个需要两个双精度的私有抽象方法。然后具体的类可以实现这个方法来在算法中的某些点除或减双精度数。

这种方法的问题是我不知道如何对其进行单元测试。如果可以,我可以使用 moq 框架测试抽象类吗?否则我需要测试两个将重复代码的具体类,因为测试是相同的。

有没有办法对我的尝试进行单元测试,还是有更好的方法?

凯文

4

1 回答 1

0

Why not factor out the common code of the two unit test methods into a shared method?

private int[] input = new int[] { 2, 8, 6, 1, 5, 1, 7, 5, 2, 4 };

[TestMethod]
public void TestVariantA() 
{
    var obj = new ConcreteA();
    DoTest(obj, input, new int[] { -2.8, 3, 1.4, -3.2, 1 });
}


[TestMethod]
public void TestVariantB() 
{
    var obj = new ConcreteB();
    DoTest(obj, input, new int[] { 0.2632, 1.7500, 1.3397, 0.2381, 1.2500 });
}

private void DoTest(AbstractType obj, int input, int expected)
{
    ...
}
于 2013-02-08T19:16:20.753 回答