首页 > 解决方案 > 如何在 Visual Studio 中正确链接文件以运行本机测试?

问题描述

我正在尝试为我的课程编写单元测试,但我得到了“未解析的外部符号”。没有语法错误,我尝试在 Microsoft 官方网站上查找原因,但不幸的是,它可能是由一百万种不同的原因引起的。关于我能做什么或可能导致它的任何建议?这是我的代码:

// Example.h file
#pragma once
#include <iostream>

using namespace std;

class Example {
public:
  int addTwoNumbers(int first, int second);
};
// Example.cpp file
#include "Example.h"
#include <iostream>

using namespace std;

int Example::addTwoNumbers(int first, int second) {
  return first + second;
}
// Test.cpp file
#include "pch.h"
#include "../Project/Example.h"
#include "CppUnitTest.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace Tests
{
  TEST_CLASS(Tests)
  {
  public:
    TEST_METHOD(UnitTest1)
    {
      Example e;
      Assert::AreEqual(4, e.addTwoNumbers(2, 2)); // this line is causing issues
    }
  };
}

我得到的确切错误:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: int __thiscall Example::addTwoNumbers(int,int)" (?addTwoNumbers@Example@@QAEHHH@Z) referenced in function "public: void __thiscall Tests::Tests::UnitTest1(void)" (?UnitTest1@Tests@1@QAEXXZ)   Tests   C:\Users\me\source\repos\Tests\Tests.obj    1   

标签: c++visual-studioclasstesting

解决方案


您可以检查是否包含以下步骤。你可以参考这个链接Write unit tests for C/C++ in Visual Studio

  1. 添加对UnitTest.

  2. 链接到对象或库文件:Properties->Linker->Input->Additional Dependencies->input ..\ProjectName\Debug\*.obj

  3. 为头文件添加#include 指令:#include "../Project1/Example.h"

如果仍然出现lnk2019,尝试将以下代码添加到Example.cpp。

#include<iostream>
#include "Example.h"
using namespace std;

int Example::addTwoNumbers(int first, int second) {
    return first + second;
}

int main()
{
    return 0;
}

推荐阅读