首页 > 解决方案 > 为什么这个 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条件也不会通过?

标签: unit-testingif-statementcode-coverage

解决方案


覆盖率工具记录您的测试导致执行的代码行。

如果您的标志是通过读取某些输入设置的,那么该标志用于决定采用哪个分支,测试将遵循一条路径或另一条路径。如果您的测试代码检查无效输入,则使用有效输入的测试不会执行代码处理。您将需要对每种可能的情况进行测试,以便涵盖所有路径。

顺便说一句,覆盖率工具不仅对它生成的统计数据有用,而且对确认测试是否符合您的想法。如果测试失败,您可以查看覆盖率并查看它有多远以及执行了哪些分支。


推荐阅读