我目前正在研究单元测试,但不太确定如何实现完整的分支和类覆盖。
鉴于以下课程:
public class foo
{
public int multiply(int a, int b)
{
int returnVal = 0;
if(a==0 || b == 0)
{
return returnVal;
}
if(a==1)
{
return b;
}
else if(b==1)
{
return a;
}
for(int i = 0; i < a; i++)
{
returnVal += b;
}
}
我可以对上面的代码做些什么来使其具有100%的分支覆盖能力?
答案 0 :(得分:1)
我可以对上面的代码做些什么来使其具有100%的分支覆盖能力?
如果我已正确阅读您的代码,则无需更改代码。如果您想要100%覆盖率,您只需要适当地设计测试用例。
(提示:如果我计算得当,你可以通过一组5个测试用例获得100%的覆盖率......)
答案 1 :(得分:0)
您可以通过5个单元测试覆盖所有代码。
multiply(0, 13)
必须返回0
multiply(13, 0)
必须返回0
multiply(1, 13)
必须返回13
multiply(13, 1)
必须返回13
multiply(5, 4)
必须返回20
请注意,使用Junit,您可以使用parameterized tests。
答案 2 :(得分:0)
还有更多要添加为覆盖标准而不仅仅是
完整的分支和班级覆盖
就够了。如果我们谈论基本覆盖标准,则有许多覆盖标准,主要是:
如果您有兴趣并希望详细了解 - code coverage criteria。