Java 全类覆盖单元测试

Java 全类覆盖单元测试,java,unit-testing,junit,branch,Java,Unit Testing,Junit,Branch,我目前正在研究单元测试,但不太确定如何实现完整的分支和类覆盖 鉴于以下类别: 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; } els

我目前正在研究单元测试,但不太确定如何实现完整的分支和类覆盖

鉴于以下类别:

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;
      }
}
公共类foo
{
公共整数乘法(整数a,整数b)
{
int returnVal=0;
如果(a==0 | | b==0)
{
返回值;
}
如果(a==1)
{
返回b;
}
else如果(b==1)
{
返回a;
}
for(int i=0;i
我可以对上面的代码做些什么,使其具有100%的分支覆盖能力

我可以对上面的代码做些什么,使其具有100%的分支覆盖能力

如果我正确地阅读了您的代码,那么您不需要更改它。如果您想要100%的覆盖率,您只需要适当地设计测试用例


(提示:如果我计算正确,您可以使用一组5个测试用例获得100%的覆盖率…

您可以使用5个单元测试覆盖所有代码

测验 当a=0时
乘法(0,13)
必须返回
0

当b=0时
乘法(13,0)
必须返回
0

当a=1时
乘法(1,13)
必须返回
13

当b=1时
乘法(13,1)
必须返回
13

名义情况
乘法(5,4)
必须返回
20

提示 请注意,对于Junit,您可以使用。

作为覆盖率标准,您可以添加更多内容,而不仅仅是

全部分支机构和班级覆盖

就足够了。如果我们谈论基本的保险标准,有很多保险标准,主要的有:

  • 函数覆盖率-是否调用了程序中的每个函数(或子例程)
  • 语句覆盖率-程序中的每个语句是否都已执行
  • 已经提到的分支覆盖率-每个控制结构(如if和case语句)的每个分支(又名DD路径)是否都已执行?例如,给定一个if语句,真分支和假分支是否都已执行?另一种说法是,程序中的每条边是否都已执行
  • 条件覆盖率(或谓词覆盖率)-每个布尔子表达式的计算结果是否同时为true和false

如果您感兴趣并想阅读更多关于-。

这正是我的想法。我想绝对确定这就是我发布它的原因。