首页 文章

我如何阅读伊斯坦布尔报道?

提问于
浏览
71

我一直使用Jasmine进行单元测试,但最近我开始使用Istanbul来给我代码覆盖报告 . 我的意思是我得到他们试图告诉我的要点,但我不知道每个百分比代表什么(Stmts,Branches,Funcs,Lines) . 到目前为止谷歌搜索我一直无法找到可靠的解释/资源 .

Question :就像我说的那样,我得到了它的要点,但有人可以发布正确的解释或链接到正确的解释吗?

Tertiary Question :有什么办法可以确定你的代码的哪些特定部分是基本猜测的 .

-------------------|-----------|-----------|-----------|-----------|
File               |   % Stmts |% Branches |   % Funcs |   % Lines |
-------------------|-----------|-----------|-----------|-----------|
   controllers/    |      88.1 |     77.78 |     78.57 |      88.1 |
      dashboard.js |      88.1 |     77.78 |     78.57 |      88.1 |
-------------------|-----------|-----------|-----------|-----------|
All files          |      88.1 |     77.78 |     78.57 |      88.1 |
-------------------|-----------|-----------|-----------|-----------|

3 回答

  • 108

    有许多覆盖标准,主要是:

    • Function coverage 程序中的每个函数(或子程序)都被调用了吗?

    • Statement coverage 程序中的每个语句都已执行?

    • Branch coverage 每个控制结构的每个分支(也称为DD路径)(例如if和case语句)是否已被执行?例如,给定if语句,是否已执行true和false分支?另一种说法是,程序中的每个边缘都被执行了吗?

    • Line coverage 已执行源文件中的每个可执行行?

    对于每种情况,百分比表示 executed code vs not-executed code ,它等于百分比格式的每个分数(例如:50%分支,1/2) .

    在文件报告中:

    • 'E' 代表'else path not taken',这意味着对于标记的if / else语句,'if'路径已经过测试但不是'else' .

    • 'I' 代表'if path not taken',这是相反的情况:'if'尚未经过测试 .

    • 左栏中的 xN 是该行已执行的次数 .

    • 未执行的行或代码段将以红色突出显示 .

    这已经在伊斯坦布尔v0.4.0中得到验证,我不确定这是否仍然适用于后续版本,但由于该库是基于坚实的理论原则,对于较新的版本,行为不应该改变太多 .

    它还提供了一些颜色代码 -

    Pink :未涵盖的陈述 .

    Orange :功能未涵盖 .

    Yellow :分支未涵盖 .

    完整的伊斯坦布尔文档:

    https://gotwarlost.github.io/istanbul/public/apidocs/index.html

    有关代码覆盖的更深入理论:

    https://en.wikipedia.org/wiki/Code_coverage

    希望能帮助到你!

  • 5

    运行istanbul还应该为报告生成一个HTML文件(应该在coverage文件夹中) . 当您单击文件/文件夹时,此HTML应该为您提供深入信息 .

    涵盖的函数百分比由测试期间调用的函数数除以函数总数计算得出 . 行和语句也是如此(除非你有很长的语句,否则它们通常会彼此接近) . 分支意味着决策点,如 if-else 块 . 例如,假设您的代码只包含一个 if-else 语句,并且您的测试仅通过 if 部分但不通过 else 部分,则您的分支百分比应为50% .

    希望能让事情更加清晰 .

  • -2

    添加到以前的答案

    %声明的计算方法是,取一个测试所涵盖的声明数量的百分比,例如12/18 * 100 = 66.67% . 这意味着您的测试仅覆盖66.67% .

    %Branch也以相同的方式计算 . 您的%函数和%行相同 .

    在项目根目录中,有一个coverage文件夹,其中包含测试的HTML输出 . 单击它并在浏览器中查看它 . 你应该看到这样的东西

    Image showing the output of your test results

    我希望这能帮助你更好地理解它 .

相关问题