从 VS6 移植到 VS2008 时在不寻常的架构中使用单元测试?

Posted

技术标签:

【中文标题】从 VS6 移植到 VS2008 时在不寻常的架构中使用单元测试?【英文标题】:Use unit tests in unusual architecture when porting from VS6 to VS2008? 【发布时间】:2010-09-28 13:45:59 【问题描述】:

我们有一个主应用程序,它最多可以执行 5 个不同的 exe。这些 exe 独立运行并通过 UDP 相互通信。目前没有计划更改此架构。

我们希望将整个事情从 VS6 迁移到 VS2008。 我正在考虑添加单元测试以确保迁移后一切仍然有效。目前,还没有一个单元测试。

所以现在我有几个问题:

哪个单元测试框架适用于 VS6 和 VS2008? CppUnit 似乎可以与两种编译器一起使用,至少我让它运行起来了。 如何在上述架构中实现单元测试?我看到一个问题,我有可执行文件但没有库,所以当时对我来说似乎有点困难 为这两个平台创建单元测试值得付出努力还是您有更简单的建议?

欢迎提出建议、最佳做法和新想法 :)

谢谢

【问题讨论】:

【参考方案1】:

如果他们通过 UDP 进行通信,并且您想确保各个部分之间的集成现在和以后都能正常工作,您可以针对 MSTest 中的 UDP 接口或 VS2008 中的 NUnit 编写自动化测试。

在 VS2008 中编写测试并将接口的输入/验证输出发送到 .exe 应用程序。然后,当您切换到 .NET 时,只需将测试指向 .NET .exe 的新端点并运行它们以验证所有输入和输出是否相同。

我认为您会花更多时间专门为新应用编写单元测试,但要针对外部 UDP 接口编写测试以验证迁移是否成功。

【讨论】:

【参考方案2】:

如果您愿意将每个可执行文件视为“模块”,那么有一种方法可以引入测试而不会过于侵入。 这将创建对许多人来说有点大的模块(当人们谈论模块时,典型的大小是类或源文件),但是您的通信机制提供了一种很好的方式来挂钩测试。

由于您拥有的架构以及您没有现有的代码测试工具这一事实,我将编写一个可以使用 UDP 接口与每个可执行文件隔离通信的测试工具。 执行测试时,只有一个可执行文件在运行(除了测试代码)。测试代码通过侦听它们各自的 UDP 端口并根据测试用例的需要提供响应来模拟其他可执行文件。测试用例还通过向其发送 UDP 请求来刺激被测可执行文件。如果还涉及 GUI/TUI,则可能需要手动执行部分测试。

【讨论】:

以上是关于从 VS6 移植到 VS2008 时在不寻常的架构中使用单元测试?的主要内容,如果未能解决你的问题,请参考以下文章

将 VS6 MFC 对话框应用程序外观升级到 VS2008

将托管 C++ 从 vs2003 移植到 vs2008 的问题

将 WCF 项目从 VS 2008 移植到 2010 时出错

VS6 COM 应用程序崩溃并出现潜在的内存完整性错误

.lib 和 .dll 向后兼容性

将 VC++ 应用程序移植到 VS2008 的问题