我正在开发一个程序来操纵成本历史并最终进行预测。
我遇到的问题是我想计算修改器,这些修改器将用于成本历史记录以消除季节差异。我需要两种不同的方法来计算它们,并且这两种方法几乎相同,除了它将是乘法而不是加法的地方。
一个例子是:
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框架测试抽象类吗?否则我需要测试两个将重复代码的具体类,因为测试将是相同的。
有没有办法对我的尝试进行单元测试,还是有更好的方法?
凯文
答案 0 :(得分:0)
为什么不将两个单元测试方法的公共代码分解为共享方法?
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)
{
...
}