- 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, проект собирался и одиночный модульный тест запускался только в том случае, если я оставил строку 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
Мобильная версия