首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse使用什么样的测试覆盖标准?

Eclipse使用什么样的测试覆盖标准?
EN

Stack Overflow用户
提问于 2018-01-15 15:30:39
回答 3查看 1.6K关注 0票数 2

我试图了解Eclipse使用何种类型的测试覆盖度量。

我编写了两个简单的函数如下:

代码语言:javascript
复制
public class Hello {
  public void f(int a, int b) {
      int sum = a + b;
      if (sum > 0)
          print("blue");
      else if (sum < 0)
          print("red");
      print("done");
  }

  void print(String s) {
      System.out.println(s);
  }


  public void g(int x, int y) {
      if (x == 0 || y > 0) {
          print("red");
      } else {
          print("blue");
      }
  }
}

然后,我从单元测试中调用函数,如下所示:

代码语言:javascript
复制
import org.junit.jupiter.api.Test;

class TestHello {

  @Test
  void test_f() {
      new Hello().f(2, 4);
      new Hello().f(-1, -2);
      new Hello().f(-1, 1);
  }

  @Test
  void test_g() {
      new Hello().g(0, 5);
      new Hello().g(5, 0);
      new Hello().g(0, 0);
      //new Hello().g(5, 5);
  }
}

因此,对于函数g,Eclipse表示“4个分支中有1个没有完成”,并将第18行标记为黄色。

另一方面,覆盖率窗口显示函数g是100%覆盖的,而第一列上的绿色条不像函数f(我认为这些条显示离100%有多近)那么长。

所以我试着把这一切搞清楚。Eclipse是否使用:

  • 分支覆盖
  • 条件覆盖
  • 分支和条件覆盖
  • 修改的条件/决策覆盖范围(mc/dc)
  • 多条件覆盖(mcc)
  • 还有别的吗?

根据覆盖率窗口上显示的%100覆盖率,它可能使用分支和条件覆盖。然而,黄色的标记线可能告诉我,它使用的是更强的东西,如mc/dc或mcc。然后,有进度条看起来像绿色的酒吧,我不知道是什么试图告诉我?

我很感激一个比我更有见识的人能够从所有这些观察中理解,并能解释Eclipse正在使用什么度量以及进度条与百分比相比意味着什么?

EN

回答 3

Stack Overflow用户

发布于 2018-01-15 15:40:33

我相信这只是报表和分支机构的报道,没有别的了。(AFAIK,没有真正提供条件覆盖的代码覆盖工具。)

覆盖率窗口中显示的百分比仅指第一个度量(语句覆盖率),所以这就是为什么它都是100%的原因。

票数 1
EN

Stack Overflow用户

发布于 2018-01-15 15:45:09

Eclipse,通过插件外引理,使用jacoco进行代码覆盖。

关于jacoco的文档是这里

它允许在“线路”和“分支”覆盖之间切换,其定义如下:

JaCoCo还计算所有if和switch语句的分支覆盖率。此度量计算方法中此类分支的总数,并确定已执行或丢失的分支的数量。分支覆盖始终可用,即使在类文件中没有调试信息时也是如此。注意,在此计数器定义的上下文中,异常处理不被视为分支。 如果已使用调试信息编译了类文件,则可以将决策点映射到源行,并相应突出显示: 没有覆盖:行中没有分支被执行(红色菱形) 部分覆盖:只执行了行中的部分分支(黄色菱形) 全面覆盖:行中的所有分支都已执行(绿色钻石)

票数 1
EN

Stack Overflow用户

发布于 2018-01-15 15:45:16

在不确定的情况下,这里是我的刺:

  • 条形图按长度对指令编号进行编码(将对未覆盖的指令进行颜色编码)。
  • 第18行突出显示为通过条件的一个分支未被测试,因为y > 0从来没有通过快捷方式或进行验证;通过取消对行的注释(或在测试new Hello().g(1, 1)之后运行)将其变为绿色。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48266017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档