JSo*_*oet 6 c++ unit-testing googlemock gmock
我试图将单元测试和模拟添加到旧项目中。作为该过程的一部分,我部分模拟了其中一个类,仅模拟了我正在测试的类中需要的方法。然后,我将此模拟传递给类以进行依赖项注入,并在析构函数中将其删除,但是当我运行测试时,它抱怨:
ERROR: this mock object (used in test xxxx) should be deleted but never is. Its address is @0000000004208AD0.
ERROR: 1 leaked mock object found at program exit.
Run Code Online (Sandbox Code Playgroud)
通过代码进行调试时,我可以看到在析构函数中的模拟对象上调用了delete,但仍在抱怨。如果在测试结束时再次调用delete,则会引发SEH异常,因为我正在尝试删除已经取消分配的内存,但是如果我在析构函数中对删除进行注释,则它可以工作(但是显然导致内存泄漏)
问题是我没有将析构函数声明为虚拟的,因此在实际代码中,它是在调用基类的析构函数,而不是我的模拟析构函数。
根据我在测试中删除该模拟程序时有关该函数的最新声明,这对于某些人可能是显而易见的,但是花了我一段时间才弄清楚它,直到找到此链接,因此我认为我应该将其共享为以及 http://wahz.blogspot.ca/2014/08/google-mock-dammit-gets-me-every-time.html
| 归档时间: |
|
| 查看次数: |
4517 次 |
| 最近记录: |