gpt4 book ai didi

c++ - 努力使 Boost 库单元测试框架正常工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:06 25 4
gpt4 key购买 nike

我已经使用 VS2013 成功构建了 Boost 库。我还成功地包含并使用了一些 Boost.Filesystem 和 Boost.Log 的东西。但是,我正在努力让以下单元测试在 Visual Studio 2013 中工作:

#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>

class Multiplier {
public:
explicit Multiplier(int i) : _value{ i } {}
int multiply(int i) { return _value * i; }
private:
int _value;
};

BOOST_AUTO_TEST_CASE(everything_test) {
Multiplier m{ 5 };
BOOST_CHECK_EQUAL(m.multiply(2), 10);
}

这显然不是真正的单元测试,但这不是重点……:)

通过包含 boost/test/included/unit_text.hpp,我应该得到一个为我提供的 main() 函数,看来我是因为我是能够解决该错误。但是,当我运行生成的可执行文件时,我得到一个 Access violation reading location 0x00000000.

我应该运行可执行文件来运行测试吗?如果没有,我该如何运行它们?运行测试似乎是一个如此简单的操作,从文档中可以明显看出这一点,但我一定错过了它。

最佳答案

首先确保您的 makefile 中有链接信息;示例:

-lboost_system -lboost_log -lboost_signals -lboost_thread -lboost_filesystem -lboost_regex 

当然只添加特定测试用例套件所需的 boost

然后在您的测试套件文件中有以下内容:

#define BOOST_TEST_MODULE YourTestSuiteName                  
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
#include <boost/test/results_reporter.hpp>
#define BOOST_AUTO_TEST_MAIN

#ifndef NOTESTRESULTFILE
#ifdef BOOST_AUTO_TEST_MAIN
std::ofstream out;

struct ReportRedirector
{
ReportRedirector()
{
out.open("test_results.xml");
assert( out.is_open() );
boost::unit_test::results_reporter::set_stream(out);
}
};

BOOST_GLOBAL_FIXTURE(ReportRedirector)
#endif
#endif

BOOST_AUTO_TEST_SUITE (YourTestSuiteName)
BOOST_AUTO_TEST_SUITE_END( )

BOOST_AUTO_TEST_CASE(YourTestCaseName)
{
cout<<"BOOST_AUTO_TEST_CASE( YourTestCaseName )\n{"<<endl;

BOOST_CHECK(false == true); //TODO: testcase not finished

cout<<"}"<<endl;
}

这个设置对我来说工作正常,但我相信你可以用不同的方式设置 boost 单元测试套件

关于c++ - 努力使 Boost 库单元测试框架正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com