在 Visual Studio Code 中对本机 C++ 进行单元测试

Ary*_*aie 11 c++ unit-testing visual-studio-code

我一直在 Mac 上使用 Visual Studio Code 开发低级 C++ 库。它似乎非常优雅地与编译器工具链集成。但对于单元测试,我完全迷失了。市面上有无数的框架,但没有一个像 JUnit 那样被建立为标准。此外,Visual Studio Code 单元测试资源管理器的文档非常少。

哪些单元测试框架与代码前端集成得很好?应该如何建立一个单元测试项目?我正在使用 SCons,但如果需要,我可以切换到另一个构建系统。

Edw*_*ler 3

对于 CMake。这是代码的最小设置。

CMakeLists.txt

cmake_minimum_required(VERSION 3.5.1)
set(CMAKE_CXX_STANDARD 11)

set(CMAKE_CXX_FLAGS_RELEASE "-O2")

add_library(example ./some-path/example.cpp)

project(tests)

set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.55 REQUIRED COMPONENTS unit_test_framework)

add_executable(${PROJECT_NAME} ./tests/tests.cpp)
target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} example ${Boost_LIBRARIES})

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${PROJECT_NAME})
Run Code Online (Sandbox Code Playgroud)

任务.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "taskName": "build",
            "type": "shell",
            "command": "cd build && make" // cd to your build directory
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在我可以SHIFT+ CTRL+b构建我的项目,CMake 将在内置代码控制台中编译输出结束时向我显示 Boost.Tests(通过/失败)。

代码控制台的输出示例:

> Executing task: cd build && make <

[ 75%] Built target example
Scanning dependencies of target tests
[ 87%] Building CXX object CMakeFiles/tests.dir/tests/tests.cpp.o
[100%] Linking CXX executable tests
Running 74 test cases...

*** No errors detected
[100%] Built target tests

Terminal will be reused by tasks, press any key to close it.
Run Code Online (Sandbox Code Playgroud)