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

时间:2014-11-26 23:47:12

标签: unit-testing greenhills

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

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循环中进行测试。

2 个答案:

答案 0 :(得分:0)

如果在myFunction()下插入测试用例并运行它,它应该自动通过两个分支,因为小于MAX_ENUM_VAL的枚举值满足&#39; true&#39; branch和MAX_ENUM_VAL满足&#39; false&#39;科。 VectorCAST将for循环中的分支理解为关于中间子语句的条件分支。通过插入基本路径测试用例,然后阅读生成的测试用例的注释部分可以看出。

答案 1 :(得分:0)

您的定义看起来很可疑:

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?我曾预料到:

MIN_ENUM_VAL = 0x00,
ENUM_VAL_1   = MIN_EUM_VAL,

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