CppUnitTest ссылка на приложение Windows

Я пытаюсь связать свой собственный тестовый проект с существующим проектом в том же решении. В #include я пишу путь к заголовку класса, который пытаюсь проверить.

Когда я запускаю Test в Test Explorer, я получаю ошибку сборки:

Ошибка 1 ошибка LNK2019: неразрешенный внешний символ "public: __thiscall DataManager::DataManager(void)" (??0DataManager@@QAE@XZ), на который ссылается функция "public: void __thiscall MyProject.Tests::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@MyProjectTests@@QAEXXZ) D:\Documents\VisualStudio2013\Projects\MyProject\MyProject.Tests\DataManagerTests.obj MyProject.Tests

Я нашел разные примеры того, как связать собственный тестовый проект с.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);
        }

    };
}

1 ответ

Вы должны добавить.lib файл DataManager к опции входного файла ссылки. Щелкните правой кнопкой мыши по проекту, перейдите к свойствам и выберите запись ввода компоновщика. Добавьте ваш.lib к дополнительным зависимостям, укажите путь при необходимости (или добавьте.lib-файл в ваш проект)

Я знаю, что сейчас 3 года, но для будущих гуглеров, пытающихся выяснить, как выполнить модульное тестирование своего исполняемого приложения Windows: не пытайтесь связать свой проект модульного тестирования с вашим исполняемым проектом. Это не будет работать (без настройки exe для экспорта его функций, и даже тогда это довольно сомнительно).

У вас есть несколько других вариантов. Вы можете либо добавить свои исходные модули (.cpp) в проект модульного тестирования напрямую, либо поместить исходные модули в статический или динамический библиотечный проект и связать как исполняемый файл, так и проекты модульного теста с библиотекой.

Другие вопросы по тегам