我正在研究一个已存在10多年的Visual C++项目。我们刚刚决定开始添加单元测试。 Out小组正在讨论两种基本的方法,以允许单元测试针对给定的类进行编写。要么我们可以派生一个类并在派生类中添加我们需要的单元测试,或者我们可以创建一个基类并将我们需要的仅移动到基类,从中派生出我们现有的类。将单元测试添加到现有的Visual C++项目
选项1:
类CExistingClass
类CDerivedClass:CExistingClass
选项2:
类CBaseClass
类CExistingClass:CBaseClass
选项1的优点是,它不需要任何对现有类的更改 - 单元测试所需的任何内容都将严格添加到单元类项目中,并且不会向我们现有的库添加任何内容。不足之处在于,当它尝试链接时,这是一场完全灾难。为了让它适用于我们的一个库,我们必须添加一个单独的后期构建步骤来执行库的静态链接版本以及将各个OBJ文件添加到其他依赖项。
选项2的优点是链接不是一个问题 - 您只能拾取基类并测试其中的项目。不足之处在于这意味着修改现有的代码,并且通常会降低软件的可读性(在10年以上的版本中,这已经太低了)。它也打开了多重继承问题的大门,我很想避免这些问题。
我一直无法找到其他任何人通过这个决策过程的讨论,并且有兴趣看看其他地方已经决定了什么,并且获得任何经验教训,或者更好,然后听到一个选项3,考虑。