我在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开始... ... /序列--run_test = test --logger = HRF,全部--color_output = false --report_format = HRF --show_progress = no 你好,世界! 流程结束,退出代码为0
感谢所有帮助和建议!
感谢您的帮助。我最终创建了一个用于测试的模板项目。然后,我将该项目复制到带有实际代码的项目中,并添加 将子目录(该目录的名称与_boost_test_project )添加到CMakeFile。
之后,您将在CLion中获得“运行所有测试”功能。
答案 0 :(得分:0)
您的程序代码和测试代码应分开。如doc中所述,该行
Sub SaveData()
Application.ScreenUpdating = False
Dim Rng As Range
Dim MyWorkSheet As Worksheet
Set MyWorkSheet = Worksheets("Sheet2")
For Each Rng In MyWorkSheet.Range("J8:AS78")
If Rng.Value > 0 Then
Rng.Value = Rng.Value
End If
Next Rng
Application.ScreenUpdating = True
End Sub
创建主入口点。
我不知道是否可以在main.cpp中编写测试用例。在单元测试中,您需要检查组件的接口。
CMakeLists.txt:
#define BOOST_TEST_MODULE My Test
main.cpp
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)
MyMath.h:
#include "MyMath.h"
int main() {
MyMath mm;
mm.add(1,2);
return 0;
}
test1.cpp:
#ifndef MY_MATH_H
#define MY_MATH_H
class MyMath {
public:
int add(int l, int r) { return l + r; }
};
#endif
现在,我可以使用cmake构建它,并使用ctest进行测试。