现在 unit testcase 的名字的命名规则如下, 参考 <https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/utest/utest> <img width="970" height="51" alt="Image" src="https://github.com/user-attachments/assets/e0581b5e-4973-4236-81e9-6d05438cb0e4" /> 但随着目前 testcases 会从 `examples/utest/testcases` 下移出到各自所属模块的目录下,这个规则需要改变。现提出来欢迎大家讨论。确定下来后我提个 pr 一起改掉。 建议修改为:测试用例名称确保(唯一性)。完整名称由两部分组成: 模块前缀 + 测试功能, 中间以 ”." 连接。 模块前缀使用测试用例相对源码仓库根目录的相对路径,以 “.” 进行连接的命名格式。 测试功能自己定义即可,确保在同一个模块前缀下唯一。 以 dfs 为例, - 模块前缀为:"components.dfs" - API 测试(`components/dfs/utest/tc_dfs_api.c`),功能名称为 "fs_dfs_api_tc" 所以 `components/dfs/utest/tc_dfs_api.c` 中的写法如下: ```c UTEST_TC_EXPORT(testcase, "components.dfs.fs_dfs_api_tc", utest_tc_init, utest_tc_cleanup, 10); ``` 另外,对于 src 目录下的模块,由于 src 这个目录名字比较含糊,为了和 components 相对,建议用 core 替换,表示 src 下的代码都是内核 core 代码,用来和 components 下的区分 所以 src/klibc/utest/TC_rt_memcmp.c 下的可以改写为: ```c UTEST_TC_EXPORT(utest_do_tc, "core.klibc.rt_memcmp", RT_NULL, RT_NULL, 1000); ``` 附件是搜索 UTEST_TC_EXPORT 的结果: [UTEST_TC_EXPORT.txt](https://github.com/user-attachments/files/22246603/UTEST_TC_EXPORT.txt)
Activity
unicornx commentedon Sep 10, 2025
@Rbb666 @kurisaW 欢迎 comment
Rbb666 commentedon Sep 10, 2025
个人感觉:
测试用例目录.测试用例名称这样命名会清晰一点RTT 文档中心也有相关的描述:
比如:
components.dfs.tc_dfs_apisrc.klibc.tc_rt_memcmpunicornx commentedon Sep 10, 2025
我感觉你说的这个和我提的其实差不多啊,区别仅仅在于
kurisaW commentedon Sep 11, 2025
确实感觉现在的测试用例命名不够规范,最好是能一眼看出这个测试用例的用途。
下面是个人观点:比较赞同像
kernel.klibc.rt_memcmp写法(即category.module.module_test,分三级来定义),其实测试用例重点针对的还是组件还有内核这两大块,不一定要使用 src/component(依据目录名来定),例如lwip可以命名:net.lwip.lwip_loopback;然后就是实际测试用例存放的目录需不需要考虑进一步细分,比如 kernel mem,这么这里其实如果只给一个测试用例文件并且做命名的话,整体看起来会非常庞大(因为需要考虑的测试覆盖范围肯定不仅单一几个),下面是一个AI生成的测试项说明:
建议可以额外增设一级,也就是依据上面三级定义的模式,类似:
unicornx commentedon Sep 11, 2025
之所以用目录来定义 “模块前缀”, 主要是考虑目前并没有一个地方定义(标准化) cateory 和 module 这些关键字。如果要重起炉灶也是一个费时费力的事情,考虑到目前内核源码树中的目录安排应该已经是前人的经验总结,直接用目录来确保 testcase 的 “模块前缀” 的唯一性其实是一个不错的选择。
而我提出用 “core” 代替 “src”,只是因为我觉得 “src” 这个目录名字其实定义得不好而已。我不建议用 “kerenl” 是因为我觉得 “kernel” 包括了 “core” 和 “components” 两部分,不知大家是否同意我这个想法。
增设一级还是两级其实同样的问题就是谁来制定,谁来标准化?为了节省人力以及尽可能复用现有资源,正如上面我已经说过,还不如利用现有目录安排。(其实原来的 utest 的 name 命名原则也是这个意思,只不过那时是相对于
examples/utest/testcases. 而现在是相对于 RTT 源码根目录,原因我一开始就解释过了。)Rbb666 commentedon Sep 11, 2025
我这边是赞同这个命名方式的,也没必要去修改之前的规则,src重命名core我也没问题。
命名按照三级定义的模式会好一些,比较清晰一些。
kurisaW commentedon Sep 11, 2025
我建议是需要推动规范化和标准化的,不能反复拉扯非标准问题,现在不弄以后其实还是会有这种顾虑,那接下来就是针对具体代码情况去推动这里的规范定义了,可以先起个草案一起审核下
Rbb666 commentedon Sep 11, 2025
针对此issue进行简单总结:
@unicornx @kurisaW
举例:
针对像:
components/legacy/usb下面如果新增测试用例components/legacy/usb/utest/test.c命名需要是:
components.legacy.usb.test如果更深的路径,比如:
components/a/b/c/d/utest/test.c命名需要是:
components.a.b.c.d.xxxdoxygen: update naming rule for utest-case
doxygen: update naming rule for utest-case