0

私は、コスト履歴と最終的には予測を操作するプログラムを開発しています。

私が直面した問題は、シーズンの差異を取り除くためにコスト履歴で使用される修飾子を計算したいということです。それらを計算するには2つの異なる方法が必要ですが、加算ではなく乗算になる場所を除いて、これら2つはほぼ同じです。

例は次のとおりです。

    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];
        }
    }

私は、2つのdoubleを取るプライベート抽象メソッドを持つ抽象クラスで試みました。次に、具象クラスはこのメソッドを実装して、アルゴリズムの特定のポイントで倍精度を除算または減算できます。

このアプローチの問題は、ユニットテストの方法がわからないことです。はいの場合、moqフレームワークを使用して抽象クラスをテストできますか?それ以外の場合は、テストが同じになるため、コードを複製する両方の具象クラスをテストする必要があります。

私の試みをユニットテストする方法はありますか、それともより良いアプローチがありますか?

ケビン

4

1 に答える 1

0

2つの単体テストメソッドの共通コードを共有メソッドに分解してみませんか?

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 に答える