0

我在 mac os mohave 上使用 CLion。我试图将 Boost.TEST 添加到我的 c++ 项目中,但 IDE 抛出“测试框架意外退出”。

这是我的 CMakeLists:

cmake_minimum_required(VERSION 3.12)
project(sequences)

find_package(Boost COMPONENTS unit_test_framework REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})

set(CMAKE_CXX_STANDARD 11)

add_executable(sequences main.cpp)

target_link_libraries(sequences ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})

enable_testing()

和一个简单的测试:

#include <iostream>
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE(test) {
    BOOST_CHECK_EQUAL(1, 1);
}

using namespace std;

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

jetbrains 网站上的说明是关于使用 Boost.TEST 的虚假说明,我在网上找到的针对此问题的所有修复程序都已过时。

我使用与自制软件一起安装的 Boost v.1.67.0。

控制台输出:

测试于 09:48 开始 ... .../sequences --run_test=test --logger=HRF,all --color_output=false --report_format=HRF --show_progress=no 你好,世界!进程以退出代码 0 结束

感谢所有帮助和建议!

感谢帮助。我最终为测试创建了一个模板项目。然后我使用实际代码将此项目复制到我的项目中,并将 add_subdirectory( name_of_the_directory_with_boost_test_project ) 添加到 CMakeFile 中。

之后,您将在 CLion 中获得“运行所有测试”功能。

4

1 回答 1

0

你的程序代码和你的测试代码应该分开。如doc中所述,该行

#define BOOST_TEST_MODULE My Test

创建主入口点。

不知道是否可以在main.cpp中写测试用例。在单元测试中,您检查组件的接口。

CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(sequences)

find_package(Boost COMPONENTS unit_test_framework REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})

set(CMAKE_CXX_STANDARD 11)

add_executable(main src/main.cpp)
add_executable(test1 src/test1.cpp)

target_link_libraries(test_suite1 ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})

enable_testing()
add_test(NAME test_suite1 COMMAND test_suite1)

主文件

#include "MyMath.h"

int main() {
    MyMath mm;
    mm.add(1,2);

    return 0;
}

MyMath.h:

#ifndef MY_MATH_H
#define MY_MATH_H

class MyMath {
public:
    int add(int l, int r) { return l + r; }
};

#endif

测试1.cpp:

#define BOOST_TEST_MODULE My Test
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

#include "MyMath.h"
BOOST_AUTO_TEST_CASE(test) {
    MyMath mm;
    BOOST_CHECK_EQUAL(mm.add(1,2), 3);
}

现在我可以用 cmake 构建它并用 ctest 测试。

于 2018-10-22T07:30:26.033 回答