以下代码是我的方法逻辑。
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的方法是什么?
答案 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等。