unit-testing - 为什么这个 else 条件不满足代码覆盖率?
问题描述
我对为什么以下if/else
条件不符合代码覆盖率感到困惑。具体来说,else
它被标记为没有覆盖范围。
if (myBoolean) {
myComponent.myElement = 'Hello world';
} else {
myComponent.myElement = 'Hello everyone';
}
我可以重构它以设置条件myComponent.myElement
之前的值if
,这似乎可以通过。
myComponent.myElement = 'Hello everyone';
if (myBoolean) {
myComponent.myElement = 'Hello world';
}
为什么else
条件也不会通过?
解决方案
覆盖率工具记录您的测试导致执行的代码行。
如果您的标志是通过读取某些输入设置的,那么该标志用于决定采用哪个分支,测试将遵循一条路径或另一条路径。如果您的测试代码检查无效输入,则使用有效输入的测试不会执行代码处理。您将需要对每种可能的情况进行测试,以便涵盖所有路径。
顺便说一句,覆盖率工具不仅对它生成的统计数据有用,而且对确认测试是否符合您的想法。如果测试失败,您可以查看覆盖率并查看它有多远以及执行了哪些分支。
推荐阅读
- excel - SUMIF 函数多次引用
- gnuplot - gnuplot:如何绘制带孔的填充区域?
- java - java.lang.NoSuchMethodError: cucumber.api.CucumberOptions.snippets 在使用空手道依赖项运行 Cucumber 测试时
- sql - 如何在 RJDBC Oracle 数据库中从 SQL 运行查询?
- asp.net - 将图像上传到 ASP.NET 错误 404 (控制器从未调用过?)
- rust - Rust:针对 Active Directory 验证用户名和密码?
- reactjs - 创建没有构造函数和绑定错误的 ReactJS 类
- javascript - 如何在 JavaScript 中将下载的画布图像的背景颜色设为白色?
- pine-script - 在 strategy.exit 之后等待
- bash - While 循环中的模数结果为假,但如果在循环外计算则不是