首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在for循环中进行测试(单元测试)

如何在for循环中进行测试(单元测试)
EN

Stack Overflow用户
提问于 2014-11-27 07:47:12
回答 3查看 915关注 0票数 0

我使用VectorCAST进行单元测试,使用Green Hills编译器和瑞萨v850e2v3微控制器,VectorCAST指出我在下面的for循环中有两个分支要测试。

代码语言:javascript
运行
复制
typedef enum
{
    MIN_ENUM_VAL = 0x00,
    ENUM_VAL_1   = 0x01,
    ENUM_VAL_2   = 0x02,
    MAX_ENUM_VAL
} Enumeration_T;

void myFunction (void)
{
    int counter;
    for(counter = MIN_ENUM_VAL; counter < MAX_ENUM_VAL; counter++)
    {
        //Do something.
    }

    //Do something else.
}

如何测试这些分支?我真的不知道如何在for循环中进行测试。

EN

回答 3

Stack Overflow用户

发布于 2015-11-27 00:41:09

如果您在myFunction()下插入一个测试用例并运行它,它应该自动通过两个分支,因为小于MAX_ENUM_VAL的枚举值满足'true‘分支,而MAX_ENUM_VAL满足'false’分支。VectorCAST将for循环中的分支理解为相对于中间子语句的条件分支。可以通过插入基本路径测试用例,然后阅读生成的测试用例的注释部分来查看。

票数 0
EN

Stack Overflow用户

发布于 2016-09-12 20:10:18

你的定义看起来很可疑:

代码语言:javascript
运行
复制
typedef enum
{
    MIN_ENUM_VAL = 0x00,
    ENUM_VAL_1   = 0x01,
    ENUM_VAL_2   = 0x02,
    MAX_ENUM_VAL
} Enumeration_T;

您的意思是第一个enum值是1吗?那0呢?这是合法的价值吗?MIN_ENUM_VAL真的是0吗?或者是1?我已经预料到:

代码语言:javascript
运行
复制
MIN_ENUM_VAL = 0x00,
ENUM_VAL_1   = MIN_EUM_VAL,

MAX_ENUM_VAL是一个更常规的定义。不正确,但正常。正确的“最大值”是2 --你所拥有的东西的“正常”定义是LAST_ENUM_VAL,它比真正的“最大值”或“最后”值多一个(我知道,虚伪。但是到底是谁定义了这些约定呢?)

票数 0
EN

Stack Overflow用户

发布于 2021-11-14 06:49:33

根据您选择的代码覆盖率和选项,您可以为循环控制变量启用或禁用分支条件。测量循环代码覆盖率背后的想法是确保循环中的语句执行到结束,即no。迭代次数,以确保表达式按照设计进行计算。这可能会在循环中途发生,此时会生成一些异常,并且在指定的循环迭代完成之前,控制将从for循环中退出。

看看你的for循环的例子,如果循环从counter=MIN_ENUM_VAL执行到counter=MAX_ENUM_VAL,那么工具将显示你已经覆盖了condition counter < MAX_ENUM_VAL的True和False分支,除非循环体有一些在counter=MAX_ENUM_VAL之前调用break的条件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27160844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档