You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NovaProva单元测试框架未检测测试求助(x86自定义Linux平台)

排查NovaProva自定义构建后无法识别测试的问题

我之前帮同行排查过类似自定义编译NovaProva的问题,给你几个实用的排查方向:

  • 检查测试函数命名是否匹配规则
    从你的调试日志能看到NovaProva用的分类器是/^test_([a-z0-9].*)/,也就是说测试函数必须以小写test_开头,后面跟小写字母或数字。如果你的测试函数是Test_Init或者testMyFunc这种格式,肯定匹配不上,得改成test_init或者test_myfunc这类严格符合规则的命名。

  • 确认编译链接环节是否正确
    自定义构建的NovaProva,要确保测试程序的编译链接步骤没问题:

    • 编译时有没有包含NovaProva的头文件?要么代码里手动写#include <novaprova.h>,要么编译命令加-include novaprova.h;
    • 链接时有没有加上NovaProva的库?编译命令末尾要加-lnovaprova;
    • 有没有启用动态符号导出?NovaProva需要动态识别测试符号,编译测试程序时要加-rdynamic(GCC)或者对应编译器的符号导出选项,否则测试函数符号会被隐藏,NovaProva找不到。
  • 查看完整的调试日志
    你给出的日志被截断了(np: ad...),建议把完整的调试输出贴出来,重点看有没有类似np: loading module ./your_test_program、np: scanning symbols、np: found symbol test_xxx这类日志。如果看不到符号扫描到测试函数的记录,基本可以确定是符号没导出或者编译链接出了问题。

  • 验证NovaProva构建的正确性
    从零构建时,有没有确保开启了必要的功能?比如:

    • 运行configure时有没有针对x86架构做正确配置?比如./configure --host=i686-linux-gnu(如果是32位x86);
    • 构建过程中有没有报错或警告?比如缺少libelf或dl这类依赖,会导致NovaProva无法读取符号表;
      可以尝试重新构建一次,仔细看构建日志,确保所有依赖都满足,关键功能(比如符号扫描)都被编译进去。
  • 用最小测试用例验证
    写一个极简的测试程序快速验证:

    #include <novaprova.h>
    
    void test_minimal() {
        NP_ASSERT_TRUE(1);
    }
    

    编译命令:gcc -o test_minimal test_minimal.c -lnovaprova -rdynamic
    然后运行测试:./testrunner ./test_minimal
    如果这个最小用例能被识别到,那问题出在你原来的测试代码里;如果还是识别不到,那肯定是NovaProva的构建有问题,得重新检查构建步骤。

内容的提问来源于stack exchange,提问作者Abhayadev S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:04:31