自己写了一个测试用例的基类,主要是打印那个子类测试用例没有通过测试
void TestCase::Run()
{
if(!DoTest())
printf("%s %s\n", name, "failed");
else
printf("%s %s\n", name, "Succeed");
}
我现在写了四个子类,主程序例把每个子类运行一遍:
int main(void)
{
RunTests();
return 0;
}
void RunTests()
{
TestCase *t = new TestFrequency();
t->Run();
delete t;
t = new TestRadio_MulticouplerState();
t->Run();
delete t;
t = new TestQueue();
t->Run();
delete t;
t = new TestMulticouplerFrameValidtionStrategy();
t->Run();
delete t;
}
前两个测试用可以正确打印测试结果“XXX test succeed”,运行第三个也就是TestQueue的Run中的printf("%s %s\n", name, "Succeed");这一行时,在按单步运行(F6),发现程序跑飞。如果我run函数里面两个printf都注释掉,则程序可以正常运行不会跑飞。
我在网上找了相关问题,有的说是堆分配不够,所以我在cmd文件开头加了-heap 0x1000,现象还是一样,后来又改成0x2000和0x4000编译都能通过,但是还是在第三次printf跑飞,又问遇到相似问题吗?
ps:我把printf改成puts("succed"),puts("fail")就可以运行了