我有一个包含UI和一些进程的exe的C ++代码。 我的目标是将UI与进程分开,并将exe转换为dll。
为了做到这一点,我想在触摸任何代码之前生成单元测试,然后进行修改并确保测试没有失败。
问题在于我不确定这是否是最佳方法,如果是,是否有办法自动生成单元测试。
顺便说一下,我正在使用VS 2012。 你对我有什么指导吗?答案 0 :(得分:5)
为GUI编写有意义的单元测试相对困难。像FrogLogic's Squish这样的框架使GUI测试相对容易,但大多数情况下,这些工具并不是免费的。
另请注意,“事后”编写单元测试并不是一件容易的事,因为原始代码可能必须更改才能使其可测试。
答案 1 :(得分:4)
据我所知,没有工具可以自动将现有代码置于单元测试之下 - 如果这么简单,就不会有新的错误,对吧?正如arne在他的回答中所说,如果代码不是为了首先进行测试而设计的,那么它通常必须改为可测试。
在我看来,你能做的最好的事情是学习一些如何引入单元测试的技巧,只需要进行相对较少的修改(这样你就可以在开始“实际”修改之前引入单元测试);我最近读到的关于这个主题的一本书是Michael Feathers的“有效处理遗留代码”(亚马逊链接:http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052)。虽然它有一些缺点,但它对如何轻松引入单元测试的技术进行了非常详细的描述。