测试分析

ActsSamgrTes测试用例taskpool_singletask_func_test.c中testSingleTask0050在测试时存在失败的情况:


../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/taskpool_singletask_func_test.c:587:testSingleTask0050:FAIL: Expected -3 Was 0

-----------------------
5 Tests 1 Failures 0 Ignored 

分析代码testSingleTask0050测试用例主要验证了全局向量 g_nodeVector 中存储的 Node 对象的数据完整性,重点在于检查ID的顺序性名称的逆序对应关系,节点的名称是否按照特定的倒序规则与全局服务名称数组 g_serviceNameArray 对应,测试代码中在获取serviceName时是反序获取,但实际上 g_nodeVectorg_serviceNameArray 是一样的顺序,因此导致名称比对失败。

修改

在发送请求后添加延时,给系统留出了处理消息的时间,确保后台线程有机会执行回调函数并更新数据,从而保证断言检查的是正确的结果。

LITE_TEST_CASE(SingleTaskFuncTestSuite, testSingleTask0050, Function | MediumTest | Level2)
{
    for (int i = 0; i < VECTOR_Num(&g_nodeVector); i++) {
        Node *vectorAt = (Node *)VECTOR_At(&g_nodeVector, i);
        if (vectorAt == NULL) {
            continue;
        }
        TEST_ASSERT_EQUAL_INT(vectorAt->id, i + 1);
        
        // 原版代码 g_serviceNameArray 反序取值, 测试失败
        TEST_ASSERT_EQUAL_INT(strcmp(vectorAt->name, g_serviceNameArray[SERVICE_NUM - (i + 1)]), 0);
        // 修改后代码,g_serviceNameArray 正序取值, 测试成功
        TEST_ASSERT_EQUAL_INT(strcmp(vectorAt->name, g_serviceNameArray[i]), 0);
    }
};

修改后测试结果:

  新文件 1 (匹配5次)
    行 708: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/taskpool_singletask_func_test.c:340:testSingleTask0010:PASS
    行 713: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/taskpool_singletask_func_test.c:401:testSingleTask0020:PASS
    行 718: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/taskpool_singletask_func_test.c:460:testSingleTask0030:PASS
    行 743: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/taskpool_singletask_func_test.c:519:testSingleTask0040:PASS
    行 744: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/taskpool_singletask_func_test.c:578:testSingleTask0050:PASS

-----------------------
5 Tests 0 Failures 0 Ignored 
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐