使用Boost.Build和Boost.Test-linker的错误
我坚持不懈地试图弄清楚为什么我的测试不会链接.我正在使用boost.build和boost.test.我从源头构建并安装了Boost库. 我正在指定/boost//unit_test_framework作为单元测试使用要求的一部分.我的理解是,这应该设置所有链接器要求,以便与boost.test链接. 不幸的是,即使链接命令指定-lboost_unit_test_framework test.o文件 test.o文件,我也会收到对boost的未定义引用的链接错误. . 我有一个非常简单的示例,显示了所述的行为: in Jamroot: if $(BOOST_ROOT) { use-project /boost : $(BOOST_ROOT) ; } import boost ; boost.use-project ; using testing ; unit-test test : test.cpp :
4 2024-04-02
编程技术问答社区
在手动定义的套件树中提升测试用例和套件夹具
在Windows X86上使用Boost 1.46.1,Android Ti 2.2 我已经定义了自己的测试套件树,因为我需要用户选择测试顺序.尽管我知道测试应该是独立的,但这是一项要求.使用我自己的test_suite* init_unit_test_suite(int, char**)的实现重新定义了测试套件树. 对于自动测试用例和自动测试套件,有助推器:BOOST_FIXTURE_TEST_CASE和BOOST_FIXTURE_TEST_SUITE( suite_name, F ).这些宏将功能注册到framework::master_test_suite(),在这种情况下是不希望的行为. 全球固定装置(BOOST_GLOBAL_FIXTURE(fixure_name))在手动测试套件定义中不受影响. 我想在Boost单元测试框架中使用固定装置,以手动定义的测试套件和案件.一种整洁的方式. 有一些解决方法: 测试套件固定装置 - 可以定义为 是孩
10 2024-04-02
编程技术问答社区
Boost测试框架是否支持测试依赖性?
我最喜欢的单元测试框架之一是 phpunit 因为它支持测试依赖性(即,将测试标记为取决于其他测试的能力,根据其依赖性成功进行依赖性测试).我一直在使用我已经搜索了升级测试框架的文档,并找到了各种 解决方案 好吧,您已经发现自己的功能在那里,并且根据链接,最终用户可以使用它. 它没有偶然记录,"应尽快添加"(根据链接). 现在,这是我发现的一篇文章,它使用了功能: 从那里进行示例(不幸的是,似乎没有boost_auto_test_case在那里工作). 另请注意,代码不正确,因为Dependency()从未被调用,因此依赖测试也不会运行. #include using boost::unit_test::test_suite; void Dependency() { BOOST_MESSAGE( "Dependency!" ); BOOST_CHECK( 1 ); } void TC_Te
10 2024-04-02
编程技术问答社区
使用CMake-undefined main的Boost测试
我在MacPorts安装的BOOST上构建了一个使用BOOST.TEST的小程序. 这是我的最小源文件,test.cpp: #define BOOST_TEST_MODULE MyTest #include BOOST_AUTO_TEST_CASE(test1) { } 和我的CMakeLists.txt: cmake_minimum_required(VERSION 2.6) project (test) find_package(Boost COMPONENTS unit_test_framework REQUIRED) add_executable(test test.cpp) 和make VERBOSE=1的摘录: [100%] Building CXX object CMakeFiles/test.dir/test.cpp.o g++ -o CMakeFiles/test.dir/test.cp
4 2024-04-02
编程技术问答社区
提升测试错误:主要已定义
我有一个Visual Studio项目,我想用Boost.Test进行一些单元测试. 我有2个文件: 文件1: #define BOOST_TEST_MODULE FileX #include #include BOOST_AUTO_TEST_SUITE(test_suite_name) BOOST_AUTO_TEST_CASE(TestFileX) { BOOST_CHECK(true); } BOOST_AUTO_TEST_SUITE_END() 和文件2: #define BOOST_TEST_MODULE XContainer #include #include BOOST_AUTO_TEST_SUITE(test_suite_name2) BOOST_AUTO_TEST_CASE(
10 2024-04-02
编程技术问答社区
关于BOOST_CHECK_CLOSE_FRACTION的问题
我正在使用boost ::测试库,我正在尝试检查实际百分比值是否接近预期值: BOOST_CHECK_CLOSE_FRACTION( items[i].ExpectedPercent, items[i].ActualCount / totalCount, 0.05); 由于某种原因,即使值足够接近,该检查也会失败: difference between items[i].ExpectedPercent{0.40000000000000002} and items[i].ActualCount / totalReturned{0.42999999999999999} exceeds 0.050000000000000003 这是Boost的问题还是我如何使用Boost的问题? 解决方案 在进行了一些测试之后,事实证明,boost_check_close_frac
8 2024-04-02
编程技术问答社区
关于BOOST_CHECK_CLOSE_FRACTION的问题
我正在使用boost ::测试库,我正在尝试检查实际百分比值是否接近预期值: BOOST_CHECK_CLOSE_FRACTION( items[i].ExpectedPercent, items[i].ActualCount / totalCount, 0.05); 由于某种原因,即使值足够接近,该检查也会失败: difference between items[i].ExpectedPercent{0.40000000000000002} and items[i].ActualCount / totalReturned{0.42999999999999999} exceeds 0.050000000000000003 这是Boost的问题还是我如何使用Boost的问题? 解决方案 在进行了一些测试之后,事实证明,boost_check_close_frac
6 2024-04-02
编程技术问答社区
在不同进程上运行Boost单元测试
我想在SystemC程序中进行单元测试.这个想法是在每个套件中都有多个测试套件.每个测试都需要重置SystemC框架(例如,通过调用sc_simcontext::reset()),但实际上是由于某些错误显然不会很快修复的错误.因此,我决定提出解决方法. 我发现,如果我在不同的过程上运行每个测试,则一切正常.以下代码段概述了我用来使其起作用的方案: void test1() { // ... sc_start(); } void test2() { // ... sc_start(); } typedef std::function TestFunction; void run_test(TestFunction test_function) { pid_t pid = fork(); switch (pid) { case -1: throw std::runtime_error("Error forking proc
8 2024-04-02
编程技术问答社区
Boost测试库:多重定义错误
我正在尝试测试我已经完成的库(微积分),在Windows的qtCreator中. 我已经创建了一个主文件和一个单独文件中的类以进行测试.如果我编译了 http://www.boost.org/doc/libs/1_47_0/libs/test/test/doc/doc/doc/html/html/utf/utf/utf/user-guide/test-orguide/test-organization/test-organization/manual-test-suite-suite. html 它有效,因此在 http://www.boost.org/doc/doc/libs/1_47_0/libs/libs/test/test/doc/doc/doc/doc/html/html/utf/utf/utf/user-guide/testest/testest/testest test - 组织/手动无验证-case.html 也有效. 但是,当我尝试编译我的项目时,我会经常(
0 2024-04-02
编程技术问答社区
在测试用例中获取BOOST TEST测试套件名称
我正在使用BOOST TEST,我想知道是否有一种方法可以从test case内部找到test suite.我知道我可以找到test case的名称: boost::unit_test::framework::current_test_case().p_name 有没有办法找出套件名称? 我的套房结构是: suite ---> case 1 ______|--> case 2 ______|--> case 3 谢谢 解决方案 a unit_test不仅具有p_name,还具有p_parent_id,这是测试套件的ID.这两种属性均从test_unit继承,这是unit_test和test_suite的普通基类. 要从ID获得套件,我们可以查看current_test_case的工作方式: test_case const& current_test_case() { return get( s_f
6 2024-04-02
编程技术问答社区
Boost测试没有 init_unit_test_suite
我运行此代码 #define BOOST_TEST_MAIN #define BOOST_TEST_DYN_LINK #include #include #include #include using namespace boost::unit_test; using namespace std; void TestFoo() { BOOST_CHECK(0==0); } test_suite* init_unit_test_suite( int argc, char* argv[] ) { std::cout
12 2024-04-02
编程技术问答社区
boost.test vs. CppUnit
我已经使用了一段时间了(对此感到满意).当我们使用越来越多的Boost库的部分时,我对Boost进行了简短的了解.测试,我现在想知道是否应该切换到boost.test. 任何人都可以告诉我两个框架与使用boost.test的好处(如果有的话)之间的区别? 解决方案 帮自己一个忙,直接转到例如,说您有一个简单的固定装置: class MyFixture : public ::testing::Test { protected: int foo; virtual void SetUp() { foo = 0; } }; 要在您的固定装置中添加测试,请写! TEST_F(MyFixture, FooStartsAtZero) { EXPECT_EQ(0, foo); } 这就是您所需要的.请注意,缺乏明确的测试仪声明或重复所有测试名称的单独议程. 将其像 一样编译 $ g++ -o utest utest.cpp -lgtest -lg
6 2024-04-02
编程技术问答社区
如何在一个基于CMake的项目中使用Boost.Test?
我的项目使用cmake作为构建系统,我希望它执行我的boost.test测试用例. 我该如何实现?在boost.build中,我可以按以下方式进行: import testing ; use-project /my_lib : ../src ; unit-test my_test : my_test.cpp /my_lib boost_unit_test_framework ; lib boost_unit_test_framework ; 解决方案 cmake本身只是一个构建系统. CTEST是与CMAKE集成的杰出测试跑者.单位测试框架都不是;该工作可以通过boost..test或googletest完成. 要在CMAKE项目中使用基于boost的单位测试程序,您首先使用add_executable和target_link_libraries>在CMakeLists.txt脚
50 2024-04-02
编程技术问答社区
在Boost测试框架中对断言进行测试
我使用Boost测试框架来测试我的C ++代码,并想知道是否可以测试函数是否会断言?是的,听起来有些奇怪,但请忍受我!我的许多功能在进入时检查输入参数,声称它们是否无效,对此进行测试将很有用.例如: void MyFunction(int param) { assert(param > 0); // param cannot be less than 1 ... } 我希望能够做这样的事情: BOOST_CHECK_ASSERT(MyFunction(0), true); BOOST_CHECK_ASSERT(MyFunction(-1), true); BOOST_CHECK_ASSERT(MyFunction(1), false); ... 您可以检查使用Boost测试的例外,所以我想知道是否也有一些魔术... 解决方案 我不这么认为.您可以随时写自己的断言,该断言会引发异常,然后使用BOOST_CHECK_NOTHROW()作为例外.
4 2024-04-02
编程技术问答社区
获得所有提升测试套件/测试案例
正如标题所述,我想从控制台或XML输出中的测试应用程序中获取所有测试套件或测试用例(名称). 测试框架是提升测试库. 是否可以选择实现这一目标?我没有发现任何有用的文档. 解决方案 这可以在不大量入侵的情况下使用全局灯具.假设您有一个包含main显式或自动生成的翻译单元(CPP文件),则可以在提供某个命令行参数时拦截测试执行.然后,您可以使用自定义访问者遍历测试树,该访问者列出了所有可用测试.这是一个小型工作示例,它通过编译和链接文件main_test.cpp,a.cpp和b.cpp来创建测试跑者: main_test.cpp #include #include // --- Boost Includes --- #define BOOST_TEST_MODULE MyTestSuite #define BOOST_TEST_DYN_LINK #include us
6 2024-04-02
编程技术问答社区
提升测试'未定义的引用'错误
我有两个简单的文件: runner.cpp: #define BOOST_TEST_DYN_LINK #define BOOST_TEST_MODULE Main #include 和test1.cpp: #define BOOST_TEST_DYN_LINK #ifdef STAND_ALONE # define BOOST_TEST_MODULE Main #endif #include BOOST_AUTO_TEST_SUITE( Foo) BOOST_AUTO_TEST_CASE( TestSomething ) { BOOST_CHECK( true ); } BOOST_AUTO_TEST_SUITE_END() 要编译,我正在使用: $ g++ -I/e/code/boost_1_52_0 -o runner -lbo
4 2024-04-02
编程技术问答社区
提升测试链接
我想在我的项目中使用Boost test. 我在项目中使用cmake,所以我写了一个简单的CMakeList.txt来包装它: find_package (Boost COMPONENTS unit_test_framework REQUIRED) file(GLOB_RECURSE UnitTests_sources tests/*.cpp) add_executable(UnitTests ${UnitTests_sources} ) enable_testing() ADD_TEST (UnitTests UnitTests) 所以,Cmake在这里工作正常.汇编过程中的麻烦: 链接cxx可执行../../bin/unitests /usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.1/../../../../../lib/crt1.o:in 功能_start': (.text+0x20): undefined r
2 2024-04-02
编程技术问答社区
CMake:如何在相对目录下添加Boost.Test案例?
我有一个使用CMAKE和BOOST.TEST的工作项目.测试与此类目录结构(赦免ASCII ART): +-proj |---CMakeLists.txt |---build |---test |\----dir1 | \----foo.cpp // contains one BOOST_AUTO_TEST_SUITE and several BOOST_AUTO_TEST_CASE | |---bar.cpp // contains one BOOST_AUTO_TEST_SUITE and several BOOST_AUTO_TEST_CASE \----dir2 \----foo.cpp // contains one BOOST_AUTO_TEST_SUITE and several BOOST_AUTO_TEST_CASE |---bar.cpp // contains one BOOST_AUTO_TEST_SUITE and sever
4 2024-04-02
编程技术问答社区
CMake:带有单元测试的项目结构
我正在尝试构建我的项目,以包括生产源(以src子文件夹)和测试(以test subfolder).我正在使用cmake来构建这个.作为最小示例,我有以下文件: cmakelists.txt: cmake_minimum_required (VERSION 2.8) project (TEST) add_subdirectory (src) add_subdirectory (test) src/cmakelists.txt: add_executable (demo main.cpp sqr.cpp) src/sqr.h #ifndef SQR_H #define SQR_H double sqr(double); #endif // SQR_H src/sqr.cpp #include "sqr.h" double sqr(double x) { return x*x; } src/main.cpp-使用SQR,真的没关
8 2024-04-01
编程技术问答社区