VC++ VS 2013,如何使用(测试)来自另一个项目的类?

Posted

技术标签:

【中文标题】VC++ VS 2013,如何使用(测试)来自另一个项目的类?【英文标题】:VC++ VS 2013, how to use (test) classes from another project? 【发布时间】:2016-02-19 15:43:03 【问题描述】:

我有一个 C++ (VS 2013) 控制台应用程序,我想测试它(使用 Google 测试)。

我创建了一个单独的项目并添加了 gtest 包含路径等(例如使用本教程 http://www.bogotobogo.com/cplusplus/google_unit_test_gtest.php)和像这样的简单测试工作正常:

TEST(MyTests, myTest1)

    EXPECT_EQ(2+2, 4);

但是如何使用主项目中的类呢?如果我只是将项目目录添加到包含路径,那么我可以使用“仅标题”代码,但对于在 .cpp 中实现的类,我会收到 unresolved external symbol 错误。

有没有比将所有类移到库中以便能够测试更好的方法?

【问题讨论】:

“有没有比将所有类移到库中更好的方法” 不,您需要为被测类创建一个库。 将所需的源文件包含到您的测试项目中。或者,将测试项目文件移动到测试项目文件所在的同一文件夹(因此包括/排除文件会更容易)。这适用于小型项目,但很快就会在大型多项目解决方案中变得一团糟。 而不是“将所有类移动到库中”,而是将其视为“将 main 函数移出到可执行项目中”。事情会变得更容易。 ;) 在这种情况下需要添加那个大项目意味着小项目。 您可以使用这些为 Visual Studio 2015 创建的完整解决方案示例:github.com/fuatcoskun/GoogleTestVS2015 【参考方案1】:

将您的项目作为库。并为启动制作小可执行文件。这解决了很多问题。有很多项目使用这种策略。其中之一是铬。另一个例子是 Perl 语言解释器。您的项目库将很容易链接到测试。

【讨论】:

是的,我最终使用了这种方法,看起来它是最简单的。虽然我认为它不像其他语言那样容易。:(

以上是关于VC++ VS 2013,如何使用(测试)来自另一个项目的类?的主要内容,如果未能解决你的问题,请参考以下文章

使用 VS 2013 构建 VC++ 2008 项目

无法在 32 位机器上注册使用 VS2012/VC++ 构建的 COM DLL

VC6 到 VS2013 MFC 运行时错误

在VS2010的VC++中如何编译、链接、运行、调试程序

vs2013的语言库与vc++的语言库的不同都有哪些?

vs2013安装完VASSISTX助手之后字体变成斜体如何解决?