我想知道一个有效的设计或实现的测试基类。
举个例子:
class Polygon;
class Rectangle : public Polygon;
class Triangle : public Polygon;Rectangle和Triangle从Polygon继承的地方。
我希望Rectangle和Triangle的测试类使用一个基本测试类:
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。)
发布于 2013-09-03 04:37:37
我认为答案取决于多边形是否是一个虚拟基类。如果它是虚拟的,那么我会把它当作一个“私有”类,我不会直接测试它,也根本不需要一个Test_Polygon。单元测试每个子类都应该提供关于它是否正常工作的所有信息。
如果您正在测试一个在基类中实现的方法,您可以从任何不覆盖它的类中测试它。如果它是从子类中调用的方法,比如Rectangle::SetSideLen(int len) { return Polygon::SetSideLen(len); };,那么测试应该通过在Test_Rectangle中测试testRectangle.SetSideLen()来完成。如果没有不覆盖它的类,则基类本质上是不可访问的代码,可能应该删除。
如果你真的可以实例化一个独立的多边形,那么我会把它看作是“公共的”,所以我会让Test_Polygon从TestFixture继承来测试那些公共方法。
https://stackoverflow.com/questions/18579098
复制相似问题