为此方法编写JunitTestCases的适当方法是什么

时间:2011-11-08 13:19:30

标签: unit-testing testing junit

以下代码是我的方法逻辑。

pulic String getData()
{ 
if (leg.length == 4)
      return "ATE";
  else  if (leg.length == 2) {
      return "FTE";
      }
    if (leg.length == 3) {
      if (xr1.KotilaType.equals("CST")) {
        return "HTE";
      }
      return "DTE";
    }
   return "BTE";
  }

按照我的命令,我需要开始为此方法编写Junit测试用例。

正如您所看到的,此方法中只有一种方法和许多条件。

现在我的问题是, 我们是否需要为每个条件编写一个单独的Junit TestCase(一个单独的方法)?

或者只编写一个Junit TestCase并涵盖所有上述条件就足够了吗?

我是junit的新手而不是专家,请指导我为上述方法编写JunitTestCases的方法是什么?

2 个答案:

答案 0 :(得分:2)

这是风格问题。这是两种选择:使用一种方法:

public void testAll() {
    assertEquals("ATE", getData(leg4));
    assertEquals("FTE", getData(leg2));
    // etc.
}

使用一种测试方法/组合:

public void testLength4() {
    assertEquals("ATE", getData(leg4));
}

public void testLength2() {
    assertEquals("FTE", getData(leg2));
}

前者的优势在于很容易看到所有组合,因为它们都在一个地方。如果有很多组合或组合很复杂,这非常有用。

后者的优点是每个组合都有一个测试,因此很容易本地化问题,因为(理论上)只有一个测试会失败。缺点:您很快就会用尽测试方法的名称。 testLength4,testLength2,testLength3WithCST,testLength3WithoutCST。当你有很多组合时(例如,一年中每个月进行一次测试),这个缺点会变得特别糟糕。

大多数情况下,我使用一个测试方法/测试用例,但如果组合的数量开始变高,我会有一个方法。这包含所有组合,因为我希望能够一次看到我的所有组合,看看我是否错过了任何组合。

答案 1 :(得分:0)

我首先对每个可能的返回值进行五次单元测试,将测试对象的状态(leg.length& xr1.KotilaType)设置为每次测试中的适当值。

然后我将转向涵盖边界值的测试,例如leg.length == 5,1等。