【问题标题】:CppUnitTest link to Windows ApplicationCppUnitTest 链接到 Windows 应用程序
【发布时间】:2016-08-17 02:53:56
【问题描述】:

我正在尝试将我的本机测试项目链接到同一解决方案中的现有项目。 在#include 中,我正在编写我要测试的类的标题的路径。

当我在测试资源管理器中运行测试时出现构建错误:

错误 1 ​​错误 LNK2019: 无法解析的外部符号 "public: __thiscall DataManager::DataManager(void)" (??0DataManager@@QAE@XZ) 中引用 函数“公共:无效__thiscall MyProject.Tests::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@MyProjectTests@@QAEXXZ) D:\Documents\VisualStudio2013\Projects\MyProject\MyProject.Tests\DataManagerTests.obj MyProject.Tests

我发现了如何将 Native 测试项目链接到 .dll 项目或静态库而不是 Windows 应用程序的不同示例。

非常感谢您的帮助。

#include "stdafx.h"
#include "CppUnitTest.h"

#include "D:/Documents/VisualStudio2013/Projects/MyProject/DataManager.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace VideoFaceRecognitionIPCATests
{       
    TEST_CLASS(UnitTest1)
    {
    public:

        TEST_METHOD(TestMethod1)
        {
            DataManager dataManager = DataManager();
            Assert::AreEqual(0, 0);
        }

    };
}

【问题讨论】:

    标签: visual-studio microsoft-cpp-unit-test


    【解决方案1】:

    我知道这已经 3 年了,但是对于未来试图弄清楚如何对他们的 Windows 可执行应用程序进行单元测试的谷歌人来说:不要试图将你的单元测试项目与你的可执行项目联系起来。它不起作用(没有设置 exe 来导出它的功能,即使那样它也很值得怀疑)。

    您还有其他几个选择。您可以将源模块 (.cpp) 直接添加到单元测试项目中,或者将源模块放入静态或动态库项目中,并将可执行文件和单元测试项目与库链接。

    【讨论】:

      【解决方案2】:

      您应该将 DataManager .lib 文件添加到链接输入文件选项。右键单击项目,转到属性并选择链接器输入条目。将 .lib 添加到 Additional Dependencies,根据需要指定路径(或将 .lib 文件添加到项目中)

      【讨论】:

      • 你的意思是MyProject的lib文件吗? DataManager 是我要测试的课程。顺便说一句,我在 MyProject 文件夹中找不到任何 lib 文件。
      • 我假设DataManager 项目是一个静态或动态库项目。然后会生成一个需要在单元测试项目中引用的 .lib 文件。
      猜你喜欢
      • 2014-12-21
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2012-09-13
      • 2011-05-12
      • 1970-01-01
      相关资源
      最近更新 更多