Я недавно обновил свой ноутбук до Windows 8, чтобы я мог разрабатывать для W8 и WP8. У меня было несколько проектов, созданных с помощью Visual Studio 2010, которые использовали Boost.Test для модульного тестирования. Я попытался преобразовать проекты в проекты VS2012, но столкнулся с проблемами, поэтому я просто создал новые проекты VS2012, используя тот же исходный код, что и раньше. Однако каждый набор юнит-тестов выдает исключение при запуске. Я отладил его и обнаружил, что он выдает исключение при попытке сделать отчет в make_report
метод в results_reporter.ipp
, Оскорбительная строка
case CONFIRMATION_REPORT:
s_rr_impl().m_formatter->do_confirmation_report( framework::get<test_unit>( id ), *s_rr_impl().m_output );
Где-то в коде есть map
объект, который имеет плохую память, и, следовательно, исключение. Я использую Boost 1.50.0. Я также попробовал самый последний выпуск 1.52.0, но с теми же результатами. VS2012 глючит, или есть какие-то настройки / конфигурации, о которых я не знаю, или различия в разработке на Windows 7 против 8?
редактировать
Вот пример теста, который генерирует исключение в моей среде с VS2012 и Boost 1.50.0:
#define BOOST_TEST_MODULE exception.test
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(SuiteTest)
BOOST_AUTO_TEST_CASE(exceptionTest){
BOOST_REQUIRE(true);
}
BOOST_AUTO_TEST_SUITE_END()
Это происходило из-за некоторых глобальных изменений new
а также delete
это было случайно импортировано через другой тестовый класс в моем проекте.
Других решений пока нет …