我使用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循环中进行测试。
答案 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
,这比真正的“最大”或“最后”定义多一个(我知道这是虚伪的。但是无论如何谁定义了这些约定?)。