51Testing软件测试论坛

标题: cppunit_tear down/setup使用问题 [打印本页]

作者: lesley    时间: 2006-3-29 16:20
标题: cppunit_tear down/setup使用问题
为啥在tear downfree函数时,测试结果会是error,详细信息为tearDown() failed- uncaught exception of unknown type

void httpserver::setUp()
{
        char *original=(char *)malloc(100);
        memset(original,0,100);
}

void httpserver::tearDown()
{
        free(original);
        original=NULL;
}
难道不可兼容c的函数的代码编译又没有出错,为啥呀

[ 本帖最后由 lesley 于 2006-3-29 16:24 编辑 ]
作者: zixuxuwu    时间: 2006-3-29 19:52
就楼主留的代码来看,估计编译也会有问题的吧。original是个局部变量。出了setup函数就不起作用了。也就是说在setup函数中,会有内存泄露,而在teardown函数中会不认识original。不过你编译没出错,检查一下是不是整个程序中还有original的同名变量。
作者: lesley    时间: 2006-3-30 10:43
是因为这个原因吗??
class httpserver: public CppUnit::TestFixture
{
       
        CPPUNIT_TEST_SUITE( httpserver );        
        CPPUNIT_TEST( ATest);        
        CPPUNIT_TEST_SUITE_END();
       
protected:
                char *original;
                char *tmp;
                char *terminal;
public:

       
        void setUp ();
         
        void tearDown();         
       
        void ATest();
};
是这样申明的 那如果要声请一个动态内存 不在setup里那setup不是初始化吗 ,不可以这样用吗?请版主指教
作者: VisualUnit    时间: 2006-3-30 11:36
void httpserver::setUp()
{
        char *original=(char *)malloc(100);
        memset(original,0,100);
}

这里重新声明了char *original
这个originalf现在是局部变量。
你把char *删掉就可以了,变成:

void httpserver::setUp()
{
        original=(char *)malloc(100);
        memset(original,0,100);
}
作者: zixuxuwu    时间: 2006-3-30 20:02
VisualUnit已经指出问题了,相信你已经改过了,现在应该没有问题了吧?你在setup中给局部变量original分配了空间,在teardown中释放的是类的成员变量original的空间,但是由于你没有给类的成员变量original分配空间,所以释放的时候就出了你看见的那个错误。

[ 本帖最后由 zixuxuwu 于 2006-3-30 20:07 编辑 ]
作者: lesley    时间: 2006-3-31 17:11
太感谢了!基础不好 还在学习中,谢谢版主和viusal unit




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2