正在努力使Boost库单元测试框架发挥作用
Struggling getting Boost library unit test framework to work
我已经使用VS2013成功构建了Boost库。我还成功地包含并使用了一些Boost.Filesystem和Boost.Log之类的东西。然而,我正在努力让以下单元测试在VisualStudio2013中运行:
#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
当然,只添加特定测试用例套件所需的增强
然后在您的测试套件文件中有以下内容:
#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;
}
这个设置对我来说很好,但我相信你可以用不同的方式设置增强单元测试套件
使用
#include <boost/test/unit_test.hpp>
而不是
#include <boost/test/included/unit_test.hpp>
main在test/unit_test.hpp文件中定义。"included"是一个实现细节。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 未在作用域中声明unordered_map
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 有没有一种方法可以在编译时获得作用域类名
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- C++quit()函数中可能存在作用域问题
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- Visual Studio 2017 C 本地单元测试框架不起作用
- 带有 gtest 框架的 spdlog 记录器不起作用
- CMAKE Boost 单元测试框架在 Mac 上不起作用
- CPP / JUCE 音频编程框架 - 滑块数组不起作用 - 单个滑块工作
- 正在努力使Boost库单元测试框架发挥作用