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,如何使用(测试)来自另一个项目的类?的主要内容,如果未能解决你的问题,请参考以下文章