«Не удалось настроить контекст выполнения» при запуске модульного теста VС++ с внешними зависимостями.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 «Не удалось настроить контекст выполнения» при запуске модульного теста VС++ с внешними зависимостями.

Сообщение Anonymous »

У меня есть решение (доступно в Git по этой ссылке), включающее один проект (создание библиотеки DLL) и собственный модульный тест.
  • Visual Studio Enterprise 2015 с VC++
  • В Windows 10
Структура моего решения следующая:

Код: Выделить всё

./src
+--DelaunayTriangulator.UnitTest
|  |--DelaunayTriangulatorTest.cpp
|  |--DelaunayTriangulator.UnitTest.vcxproj
+--DelaunayTriangulator
|  |--DelaunayTriangulator.cpp
|  |--DelaunayTriangulator.h
|  |--DelaunayTriangulator.vcxproj
|--Triangulator.sln
Проект

Мой исходный проект работает и собирается нормально. Он связывает некоторые библиотеки (AFAIK, по сути, это статические библиотеки), которые представляют собой всего лишь некоторые элементы CGAL, которые мне нужны в качестве зависимостей. Он также работает нормально.

Если вы посмотрите на проект, вы обнаружите, что я связываю эти файлы .lib как часть параметров компоновщика:

Код: Выделить всё

$(CGALDirPath)\build\lib\Debug\CGAL-vc140-mt-gd-4.12.lib;$(CGALDirPath)\auxiliary\gmp\lib\libgmp-10.lib;$(CGALDirPath)\auxiliary\gmp\lib\libmpfr-4.lib;..
...

Тестовый проект

Проект модульного теста был создан с использованием пошагового руководства и шаблона собственного тестового проекта в Visual Studio. Тестовый проект также связывает те же файлы .lib, что и исходный проект. Ниже приведен единственный тест, который у меня есть:

Код: Выделить всё

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

#include "../DelaunayTriangulator/DelaunayTriangulator.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace CodeAlive::Triangulation;

namespace TriangulatorUnitTest {
TEST_CLASS(DelaunayTriangulatorTest) {

public:
TEST_METHOD(PerformTriangulation) {
DelaunayTriangulator* triangulator = new DelaunayTriangulator();
int result = triangulator->Perform();

Assert::AreEqual(0, result, L"Wrong result", LINE_INFO());

delete triangulator;
}
}; // class
} // ns
До того, как я связал эти файлы .lib с CGAL, проект собирался, но НЕ запускался вообще, показывая это сообщение об ошибке:


Сообщение: не удалось настроить контекст выполнения для запуска теста


Ошибка

Как только когда я добавлял файлы .lib, проект собирался и одиночный модульный тест запускался только в том случае, если я оставил строку Assert без комментариев (мне пришлось прокомментировать весь код, ссылающийся на мой исходный проект):

Код: Выделить всё

TEST_CLASS(DelaunayTriangulatorTest) {
public:
TEST_METHOD(PerformTriangulation) {
Assert::AreEqual(0, 0, L"Wrong result", LINE_INFO());
}
};
Когда я раскомментирую код, ссылающийся на мой проект (используя классы, которые я определил в исходном проекте), то при попытке запустить тест появляется то же сообщение об ошибке:

Код: Выделить всё

TEST_CLASS(DelaunayTriangulatorTest) {
public:
TEST_METHOD(PerformTriangulation) {
DelaunayTriangulator* triangulator = new DelaunayTriangulator();
int result = triangulator->Perform();

Assert::AreEqual(0, result, L"Wrong result", LINE_INFO());

delete triangulator;
}
};
Я понимаю, что это связано с какой-то проблемой с внешними ссылками. Что здесь не так?

Подробнее здесь: https://stackoverflow.com/questions/512 ... external-d
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»