Boost.TEST 与 CLion:"Test framework quit unexpectedly"
Boost.TEST with CLion: "Test framework quit unexpectedly"
我在 mac os mohave 上使用 CLion。我试图将 Boost.TEST 添加到我的 C++ 项目中,但是 IDE 抛出 "Test framework quit unexpectedly".
这是我的 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,安装了 homebrew。
控制台输出:
测试开始于 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 中的 "run all test" 功能。
你的程序代码和测试代码应该分开。如 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)
main.cpp
#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
test1.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 进行测试。
我在 mac os mohave 上使用 CLion。我试图将 Boost.TEST 添加到我的 C++ 项目中,但是 IDE 抛出 "Test framework quit unexpectedly".
这是我的 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,安装了 homebrew。
控制台输出:
测试开始于 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 中的 "run all test" 功能。
你的程序代码和测试代码应该分开。如 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)
main.cpp
#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
test1.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 进行测试。