在不引入错误的情况下转换项目
Convert project without introducing bugs
我有一个 exe 的C++代码,其中包含一个 UI 和一些进程。我的目标是将 UI 与进程分开,并将 exe 转换为 dll。
为了做到这一点,我正在考虑在接触任何代码之前生成单元测试,然后进行修改并确保测试不会失败。
问题是我不确定这是否是最好的方法,如果是,有没有办法自动生成单元测试。
顺便说一句,我正在使用VS 2012。你对我有什么指导吗?
为 GUI 编写有意义的单元测试相对困难。有一些像FrogLogic的Squish这样的框架使GUI测试相对容易,但大多数情况下,这些工具不是免费的。
另请注意,"事后"编写单元测试并非易事,因为原始代码可能已经必须更改以使其可测试。
据我所知,没有工具可以自动将现有代码置于单元测试之下 - 如果这么简单,应该根本没有新的错误,对吧?正如 arne 在他的回答中所说,如果代码一开始就不是为了测试而设计的,那么通常必须对其进行更改才能进行测试。
在我看来,你能做的最好的事情就是学习一些如何引入相对较少更改的单元测试的技术(这样你就可以在开始"真正的"修改之前引入单元测试);我最近读过的一本关于这个主题的书是Michael Feathers的《有效地使用遗留代码》(Amazon Link: http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052)。虽然它有一些缺点,但它对如何轻松引入单元测试的技术进行了非常详细的描述。
相关文章:
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- 我们可以在不知道其真实类型的情况下将基类指针转换为派生类指针吗?
- 为什么我不能在不进行任何转换的情况下将浮点数放入任何类型的 ptr 中?
- 在 C++ 中,我可以在不修改类的情况下定义对类的隐式转换吗?
- 如何在不违反C++核心准则的情况下将整数强制转换为void*
- 在不复制数据的情况下,将double数组转换为只有double成员的structs数组
- 为什么不能指向指针,在没有强制转换的情况下访问结构成员?
- 如何在没有映射的情况下在枚举和字符串之间进行转换?
- 尝试在不使用转换概念的情况下呈现此代码
- 如何在不复制数据的情况下将 cv::Mat 转换为 2d 标准::矢量
- 如何在不将其转换为 ASCII 字符的情况下显示 QByteArray 的十六进制值
- 在不损失阿尔法值的情况下将 QColor 转换为 QString
- 句子转换器在存在新行的情况下不起作用
- 如何在不复制数据的情况下在平面数组和多维数组之间进行转换?
- 为什么Arduino(小端序)上的Sha1在没有转换为大端序的情况下工作?
- 如何避免字符串到整数转换情况下的无效参数异常
- 如何使用std :: codecvt_utf8_utf16在没有任何字符串类的情况下转换为UTF8
- 如何在不产生 JNI 问题的情况下转换 byte[] -> uint8_t[]?
- 在不引入错误的情况下转换项目
- VTK6-在没有管道的情况下转换vtkPolyData