我最近将笔记本电脑升级到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()
答案 0 :(得分:1)
这种情况正在发生,因为new
和delete
的一些全局覆盖在我的项目中被另一个测试类意外导入。