c++ - 如何在 Visual Studio 中测试已编译的 DLL(或生成多个可执行文件)?

标签 c++ c visual-studio testing

我正在开发一个需要定期测试和分析的共享库。主要目标平台是 Linux(通常),因此我们的团队为构建系统选择了 autotools (auto[scan,conf,make] + libtool + pkg-config)。然后客户决定他也想在 Windows 上使用他的软件。所以我添加了一个 visual studio 解决方案。该库在 Windows 上也能编译、链接和运行良好,尽管我的开发周期缺乏在 Windows 上的适当测试。

我在 Linux 上使用 automake 的测试套件并像这样测试:

make check -j2

它编译 10 个可执行文件(客户端服务器对),这些文件链接到我的库(已经构建在相同的构建系统上)并运行它们(成对,有序)。输出是:

make[3]: Entering directory 'somefakepath/libfoo/test'
PASS: tcp_client
PASS: tcp_server
PASS: tcp_client_control
PASS: tcp_server_control
PASS: udp_client
PASS: udp_server
PASS: udp_client_raw
PASS: udp_server_raw
SKIP: udp_client_rtp
SKIP: udp_server_rtp

========================================================
Testsuite summary for libfoo 5.0.1
========================================================    
# TOTAL: 10
# PASS:  8
# SKIP:  2
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
========================================================

问题是我找不到在 Visual Studio 中执行相同操作的方法。我可以在解决方案中添加另一个项目(以生成可执行文件而不是库),但据我所知,不可能从 visual studio 中的单个项目生成多个可执行文件 [1] , [2] .添加十个项目感觉不对,许多配置参数为每个项目设置相同的值......而且选择具有多个线程的单个可执行文件也不是很好(我将不得不改变很多行,合并许多 [=10] 个文件)。

那么我如何在 visual studio 上测试我的库呢?或者从单个项目中的多个文件生成多个可执行文件? (我可以手动运行它们)

最佳答案

如果您的可执行文件之间的唯一区别是一些条件编译宏,那么您应该创建一个具有多个配置的单个可执行项目(即 udp_client_raw 配置,udp_server_raw 配置等)。如果它们在某些其他方面有所不同,您可能仍需要创建单独的项目。请注意,无需将许多配置参数设置为相同的值 - 您可以制作一次属性表,然后将其附加到所有项目。

从一个项目中生成多个可执行文件没有问题。您只需要使用 Visual Studio 中的批处理构建或使用命令行中的 msbuild 一次构建多个配置。也可以设置一个项目,将它们成对启动以进行测试。

关于c++ - 如何在 Visual Studio 中测试已编译的 DLL(或生成多个可执行文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46169216/

相关文章:

c - 外部中断 0 不工作

visual-studio - 可以在一台计算机上部署到 Windows Phone,但不能在另一台计算机上部署到 Windows Phone?

c++ - C++11 中的默认构造函数、POD 的初始化和隐式类型转换

c++ - 将 vector 中的 wchar 字符串与其他指定的 wchar 字符串进行比较

c++ - 重载运算符 = 错误

c - 在 C 中签名到无符号的转换 - 它总是安全的吗?

c++ - sizeof(*this) 给出了错误的值

c++ - 用 C 处理 TCP 的部分返回

asp.net - HTTPS 与 Visual Studio 的内置 ASP.NET 开发服务器

git - Visual Studio 想要克隆我的 GIT 存储库(当它已经存在时)