c++ - 如果我想测试 C++ 代码,应该将其编写为静态库还是动态库?

标签 c++ visual-studio unit-testing googletest

我正在 Visual Studio 中开发一个 C++ 项目,并想使用 Google Test 对其进行测试。

为了做到这一点,我构建了一个包含三个项目的解决方案:

  1. 将项目编码为控制台应用程序。
  2. Google Test 作为静态库。
  3. 将项目作为控制台应用程序进行测试。

我在代码项目中编写了代码,在测试项目中编写了测试。

当我尝试构建解决方案时,出现了 lnk2019 错误,当我将类移至测试项目时,该错误不再发生(但这不是我希望它们所在的位置)。

我读到,最好的方法是将这些类编写为库,这样我就可以在(代码和测试)项目中使用它们。

我应该将其作为静态库还是 DLL 来实现(以及为什么)?

也欢迎其他解决方案。

最佳答案

这里要理解的关键是:你把事情搞倒了。

不会做出此决定是为了进行“更容易”的测试。您首先必须了解交付的“生产要求”。如果静态库最适合交付您的产品,您可以创建一个静态库。如果没有,您创建一个动态库。

为了进行测试,您可以处理所选的“交付格式”;或者您考虑一种简单的方法,允许您构建不同的东西来进行测试(尽管不鼓励这样做,因为您想测试您的产品,仅此而已)。

不要误会我的意思:为测试而设计很重要;但您要求的决定应该由您的生产要求决定!

换句话说:您产品的“外形尺寸”应取决于产品要求,而不应由您的测试设置决定。

关于c++ - 如果我想测试 C++ 代码,应该将其编写为静态库还是动态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44747872/

相关文章:

c++ - OpenCL 示例程序在 CPU 上的执行速度比在 GPU 上快 10 倍

c++ - 在 C++ 中过滤来自 istream 的非法输入

C++:字符串和 union Bison

c++ - 使用 Visual C++ 2015 工具集构建 Windows/Windows Phone 8.1

unit-testing - 在 Azure DevOps 中发布测试结果时如何包含 NUnit 测试输出?

c# - 使用 C#/Moq 框架模拟带有输入参数的异步 DbContext 函数

c++ - 使用 constexpr 数组作为模板非类型参数 (C++14)

visual-studio - Visual Studio 6 和 2010 可以在同一台机器上共存吗?

c# - VS 2008 Professional,Smart Device .NET C# 项目 - 构建缓慢

php - 使用不同的代码接收环境