什么是覆盖率的因素 是否有任何计算覆盖率的算法

What are factors for coverage And Is there any Algorithm for calculating coverage?

本文关键字:覆盖率 任何 计算 算法 什么 是否      更新时间:2023-09-26

我正在为 Angular 编写单元测试用例(使用 Jasmine 框架和 Karma)来运行测试用例。我需要通过使用Coverage-html(伊斯坦布尔)来覆盖代码。

有不同类型的承保范围:

  1. 功能。
  2. 分支
  3. 语句
  4. 线
  5. 忽略(使用伊斯坦布尔我们可以忽略)。

请解释不同类型的覆盖范围和编写单元测试用例时需要注意的基本因素:

function setCookie(sessionId) {
    if(sessionId) {
        setCookie('sessionId', sessionId, 21600);
    } else {
        setCookie('sessionId', session.getId(), 21600);
    }
}

我为此编写了测试用例:

describe('setCookie()', function(){
    it('should be set a cookie without expiration days', function() {
        var defered =$q.defer();
        spyOn(sessionCard, 'setCookie').andCallFake(function(){
              return defered.promise;
        })
        sessionCard.setCookie('sessionId', 'sessionId');
        expect(document.cookie).toBeDefined();
        expect(document.cookie).toBeTruthy();
    });
})  

在编写单元测试时,您提到的覆盖类型要点是必要的,但它永远不会保证您已经涵盖了代码。

每个函数编写测试都有多个方案。

  1. 所有陈述至少涵盖一次
  2. 涵盖所有快乐路径场景
  3. 涵盖所有故障安全条件(负面情况/即异常阻止)

如果涵盖了上述方案,则可以安全地假设您的函数已经过全面测试。只需确保您的测试依赖于输出,而不是特定的变量即可。