什么是覆盖率的因素 是否有任何计算覆盖率的算法
What are factors for coverage And Is there any Algorithm for calculating coverage?
我正在为 Angular 编写单元测试用例(使用 Jasmine 框架和 Karma)来运行测试用例。我需要通过使用Coverage-html(伊斯坦布尔)来覆盖代码。
有不同类型的承保范围:
- 功能。
- 分支
- 语句
- 线
- 忽略(使用伊斯坦布尔我们可以忽略)。
请解释不同类型的覆盖范围和编写单元测试用例时需要注意的基本因素:
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();
});
})
在编写单元测试时,您提到的覆盖类型要点是必要的,但它永远不会保证您已经涵盖了代码。
每个函数编写测试都有多个方案。
- 所有陈述至少涵盖一次
- 涵盖所有快乐路径场景
- 涵盖所有故障安全条件(负面情况/即异常阻止)
如果涵盖了上述方案,则可以安全地假设您的函数已经过全面测试。只需确保您的测试依赖于输出,而不是特定的变量即可。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- jQuery中是否内置了任何字符串格式化函数
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 有任何可能将facebook实时信使整合到一个网站中
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- AJAX:$_GET不返回任何值
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 将事件处理程序绑定到任何可能的事件
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- document.styleSheets不返回任何内容
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- Graphiti中是否有任何工具提示功能
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 在解析对象.save()中;没有返回任何原因
- 任何浏览器都不支持javascript函数
- gmap3如何做到这一点-它显示圆圈的任何事件
- 什么是覆盖率的因素 是否有任何计算覆盖率的算法