单元测试是针对方法的逻辑进行的全面测试,通常方法都会有条件判断,那么条件判断如何做单元测试呢?答案是针对每个分支都需要写单元测试。这里我们需要考虑一个问题,如果一个函数有很多层的if...else判断呢?,那我们的单元测试就要考虑很多情形。是的,这的确是一个问题,那么解决办法是什么呢?那就是在函数中尽量不要用if...else这样的判断,如果需要写判断,也只能有一个if...else进行判断。如何对多级别if...else进行分解呢,这就需要策略模式,今后会详细讲解。在写代码设计的时候,必须遵循SOLID原则,最重要的是单一责任原则,因为只有这样类的职责才能单一,才不会有对于一个的if...else判断,这也是从测试的角度来看,为什么设计模式的重要性。
上一篇我们提到见到的测试,下面的这个例子就是对有if...else分支的单元测试的写法。
public static int Div(int x, int y)
{
if (y == 0)
return int.MaxValue;
else
return x / y;
}
测试代码如下:
[TestMethod]
public void TestDiv_IfYIsNull_Return_IntMaxValue()
{
Init();
b = 0;
int expected = int.MaxValue;
int actual = Calcator.Div(a, b);
Assert.AreEqual(expected, actual);
}
[TestMethod]
public void TestDiv_IfYIsNotNull()
{
Init();
int expected = 0;
int actual = Calcator.Div(a, b)
Assert.AreEqual(expected, actual);
}
两个方法是针对不同的判断分支进行的测试。
上图是测试结果。