本节说明如何使用 C/C++ 工具链或 Docker 容器提供的测试环境使用 C/C++test 运行分析和执行测试。
此章节:
C/C++test 附带了在 Docker 容器中运行分析和执行测试的支持。在这种情况下,将本地计算机上托管的 C/C++test 配置为在包含测试环境或 C/C++ 工具链的容器中运行分析并执行测试。
用于 C/C++test 的 Docker 集成包括以下组件:
[INSTALL_DIR]/integration/docker
:remote-gcc
– a gcc command wrapperremote-g++
– a g++ command wrapperremote-exec
– 一个通用的命令封装 器builtin://Run Unit Tests in Container
– 用于在 Docker 容器中运行单元测试的测试配置。要启用 C/C++test 和 Docker 容器之间的通信,必须确保该容器可以访问主机上与您想要使用 C/C++test 测试的项目相关的所有目录以及该 C/C++test 可以通过其标识符或名称来标识您想要使用的容器。
2。将容器编号或容器名称分配给CPPTEST_CONTAINER_NAME
环境变量。为了易于使用,我们建议您为容器指定一个易读且有意义的名称。
以下示例假定项目和所有源文件都在 Eclipse 工作空间中(/home/devel/workspace
) 并且 C/C++test 安装在 /opt/parasoft/cpptest
。用 --name
选项指定的容器名称是 "gcc9-test-container" 以指示容器镜像包含 GCC 9 编译器。
docker run --rm -it -d -v /opt/parasoft/cpptest:/opt/parasoft/cpptest -v /home/devel/workspace:/home/devel/workspace --name gcc9-test-container gcc:9 |
将容器名称分配给环境变量:
export CPPTEST_CONTAINER_NAME=gcc9-test-container |
在 Docker 容器中使用 C/C++test 执行测试需要创建自定义编译器配置,以确保可以在容器内构建 C/C++test 的运行时库。
<CUSTOM_COMPILER_CONFIG>/gui.properties
文件以设置或删除以下选项:autoBuildRuntimeLib=true.
linkerCmdLine
中删除-lcpptestruntime64
。如果仅运行静态代码分析,您可以跳过创建自定义编译器配置的操作。
您需要修改您的项目属性才能为项目配置远程工具链。
<CPPTEST_INSTALL_DIR>/integration/docker/remote-gcc
<CPPTEST_INSTALL_DIR>/integration/docker/remote-g++
<CPPTEST_INSTALL_DIR>/integration/docker/remote-g++
<CPPTEST_INSTALL_DIR>/integration/docker
复制到您的项目中,并指定与您的项目相关的路径。这使您可以将设置存储在源代码管理系统中,并在团队中共享它们。例如:${project_loc}/docker/remote-gcc
${project_loc}/docker/remote-g++
${project_loc}/docker/remote-g++
在运行静态分析之前,请确保您的 Docker 容器正在运行(请参见Configuring and Starting the Container)。无需其他配置步骤。
您可以使用任何测试配置来分析代码。在分析期间,C/C++test 将使用通过您在项目属性中配置的包装器脚本访问的 Docker 容器中的 C/C++ 编译器(请参见 在容器中设置要测试的项目)。
在使用 C/C++test 创建单元测试之前,请确保 Docker 容器正在运行(请参见 Configuring and Starting the Container)。无需其他配置步骤。
您可以使用测试配置来生成单元测试 (例如, 内建://生成单元测试
)。在测试生成期间,C/C++test 将使用通过您在项目属性中配置的包装器脚本访问的 Docker 容器中的 C/C++ 编译器(请参见 在容器中设置要测试的项目)。
在容器运行单元测试
测试配置并修改参数以创建自定义测试配置。例如,您可以在 执行> 常规>执行详细信息>远程执行命令中修改执行包装器脚本的位置(默认为${cpptest:install_dir}/integration/docker/remote-exec
)。在容器中运行单元测试
测试配置。C/C++test 将:remote-exec
封装器脚本在容器内执行测试。