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

Should I write my C++ code as a static or dynamic library if I want to test it?

我正在 Visual Studio 开发一个 C++ 项目,想使用 Google 测试来测试它。

为此,我构建了一个包含三个项目的解决方案:

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

我在代码项目中写了代码,在测试项目中写了一个测试

当我尝试构建解决方案时,出现了一个 lnk2019 错误,当我将 类 移至测试项目(但那不是我想要的位置)时,该错误不再发生。

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

我应该将其作为静态库还是 DLL(为什么)?

也欢迎其他解决方案。

这里要理解的关键是:你正在倒退。

不是 做出此决定以进行 "easier" 测试。您首先必须了解 "production requirements" 对您的交付。您创建一个静态库,如果它最适合运送您的产品。如果没有,你创建一个动态库。

为了测试,您可以交易选择"delivery format";或者您考虑一种简单的方法,允许您构建不同的东西进行测试(尽管不鼓励这样做,因为您想要测试您的产品,没有别的)。

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

换句话说:你产品的"form factor"应该取决于产品需求,而不应该由你的测试设置决定。