Нужно ли добавлять проверенные исходные файлы в проект модульных тестов в VS2017? - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь написать модульные тесты для моего проекта, используя этот учебник.

После компиляции проекта, содержащего тесты, я получаю ошибки компоновщика, почти такие же, как в this вопрос.Проблема в том, что там было добавление ссылки на тестируемый проект, но я уже сделал это, и у меня все еще появляются те же ошибки, как если бы ссылка не была добавлена.Тогда я нашел этот вопрос.Решение - просто добавить проверенные исходные файлы в проект тестов, и, конечно, все работает нормально.

Вот пример кода, который дает мне error LNK2019: unresolved external symbol:

А-ч (в проекте .exe)

#pragma once

struct A
{
    int a;

    A(int a);
};

A.cpp (в проекте .exe)

#include "A.h"

A::A(int a) : a(a)
{
}

Tests.cpp (в проекте испытаний)

#include "stdafx.h"
#include "CppUnitTest.h"
#include "../Example/A.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

TEST_CLASS(UnitTests)
{
public:
    TEST_METHOD(TestStructInitialization)
    {
        int a = 5;
        A testObject(a);
        Assert::AreEqual(a, testObject.a);
    }
};

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

1 Ответ

0 голосов
/ 14 февраля 2019

Конечно, ваши тесты должны иметь доступ к необходимым функциям.И поскольку исполняемый файл не может связываться с другим исполняемым файлом, у вас есть две опции:

  • Добавить исходные файлы, а также в проект модульного теста
  • Выполнить рефакторинг кода так, чтобы нужный кодпроверить - это библиотека (статическая или совместно используемая), которая связывается со всеми тремя исполняемыми файлами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...