首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPPUNIT:公共基础测试

CPPUNIT:公共基础测试
EN

Stack Overflow用户
提问于 2013-09-02 18:37:45
回答 1查看 206关注 0票数 0

我想知道一个有效的设计或实现的测试基类。

举个例子:

代码语言:javascript
复制
class Polygon;
class Rectangle : public Polygon;
class Triangle : public Polygon;

RectangleTrianglePolygon继承的地方。

我希望RectangleTriangle的测试类使用一个基本测试类:

代码语言:javascript
复制
class Test_Rectangle : public CppUnit::TestFixture;
class Test_Triangle : public CppUnit::TestFixture;

但我不知道class Test_Polygon是否应该继承CppUnit::TestFixture

我目前的计划是: class Test_Polygon;class Test_Rectangle : public Test_Polygon,public Test_Polygon::TestFixture;

上述计划的问题是,Test_Polygon不能使用CPPUNIT_ASSERT,也不会在CPPUNIT注册表中列出其方法。

那么,使用CPPUNIT测试基类和后代的推荐层次是什么?

(在Windows上,我在Visual 2008上使用CPPUNIT 1.12。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-03 04:37:37

我认为答案取决于多边形是否是一个虚拟基类。如果它是虚拟的,那么我会把它当作一个“私有”类,我不会直接测试它,也根本不需要一个Test_Polygon。单元测试每个子类都应该提供关于它是否正常工作的所有信息。

如果您正在测试一个在基类中实现的方法,您可以从任何不覆盖它的类中测试它。如果它是从子类中调用的方法,比如Rectangle::SetSideLen(int len) { return Polygon::SetSideLen(len); };,那么测试应该通过在Test_Rectangle中测试testRectangle.SetSideLen()来完成。如果没有不覆盖它的类,则基类本质上是不可访问的代码,可能应该删除。

如果你真的可以实例化一个独立的多边形,那么我会把它看作是“公共的”,所以我会让Test_Polygon从TestFixture继承来测试那些公共方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18579098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档