• 单元测试乱弹(一):悲剧的测试工具


    项目要结束了,按流程需要做单元测试并提交测试报告。本来公司内部有测试工具,拿过来直接用就是。但实际上一堆问题,在这里不吐不快。

    (1)首先尝试的是测试工具XXTest,但竟然编译不通过。打开代码一看,顿时跪倒:

    1         MTString log = "";
    2         log += "Time: ";
    3         log += (int)MTTime::GetTime().GetStr();

    string居然强制转为int!

    1     char buff[4096];
    2     memset(buff, 0x00, 4096);
    3     sprintf(buff, "%d",(int) ptr);

    打印指针,竟然也强制转为int. 不会用 %p么?

    告诉支持人员编译通不过,他们回复:“我这里好的很,这是外国人写的!”。

    我推测,可能是编译环境不一致引起的,也许这样的代码在他们的机器上可以通过,但在我这边却肯定是有问题的(后来证实了这一点,他们的编译器是4.1,而我们的是g++ (Debian 4.7.1-7) 4.7.1)。

    还好问题不大,就自己先fix了。

    继续编译,报错:

    1 /usr/bin/ld: Warning: size of symbol `_ZN8MTObjectD1Ev' changed from 8 in /tmp/cc3dhwh4.o to 14 in ./lib/libMTCore.a(MTCore-Linux.o)
    2 /usr/bin/ld: Warning: size of symbol `_ZN12MTRepositoryD1Ev' changed from 36 in /tmp/cc3dhwh4.o to 44 in ./lib/libMTCore.a(MTCore-Linux.o)
    3 /usr/bin/ld: i386 architecture of input file `./lib/libMTCore.a(MTCore-Linux.o)' is incompatible with i386:x86-64 output
    4 ./lib/libMTCore.a(MTCore-Linux.o): In function `MTList::AddBefore(void*)':
    5 /home/MyTest_Linux_C++/MTCore/MTList.cpp:148: undefined reference to `operator new(unsigned int)'
    6 ./lib/libMTCore.a(MTCore-Linux.o): In function `MTList::AddAfter(void*)':
    7 /home/MyTest_Linux_C++/MTCore/MTList.cpp:100: undefined reference to `operator new(unsigned int)'

    似乎是“libMTCore.a”不兼容,这个库是支持部门事先编译好提供给我们的。

    一问下来,他们是在32位Ubuntu上编译的,而我们是在64位Debian上编译的(项目要求的,无法更改),能链接的上才怪。

    问是否能提供64位版本,被告知该程序已不再维护。

    (2)还好有替代工具XXX, 但是文档看下来,复杂无比,而操作过程语焉不详,无从下手。

    询问支持人员,被告知没有人用过,需要自己摸索,有问题需要HQ(总部)支持。这是个费时费力的活,而我们只有一周的时间,可能工具还没学会,就得交报告。因此,头儿决定:不用这些坑爹的玩意了,手动测试,或者寻找外部测试工具吧。

    (3)c++ 单元测试工具,开源的一大堆。就使用google test吧,代码、使用方法都还比较简单,就是它了!

    PS: 经过此事,我们内部达成的一直意见时:下个项目,就上python!因为可以不写单元测试。。。

  • 相关阅读:
    [CTF]跳舞的小人
    [CTF]Rabbit加密
    [CTF]ROT5/13/18/47编码
    [CTF]URL编码
    [CTF]unicode编码
    [CTF]培根密码
    电机控制总结
    stm32f4定时器配置
    MOS管测量好坏测量方法
    四元数
  • 原文地址:https://www.cnblogs.com/chutianyao/p/2797297.html
Copyright © 2020-2023  润新知