c++ - CppUTest - 没有测试正在运行
问题描述
我正在尝试使用 CMake 设置 CppUTest 项目。我是 CMake 的新手,所以我从这个例子开始:link
它工作正常。项目编译,我看到测试运行。
然后我尝试根据这个例子创建我自己的项目。我的项目也编译没有错误,但我总是得到以下输出:
OK (0 tests, 0 ran, 0 checks, 0 ignored, 0 filtered out, 0 ms)
我不知道为什么 CppUTest 框架“看不到”我创建的测试。
我所做的是:创建了这样的项目结构:
.unit_tests_prj
|--project
|--code
| |-CMakeLists.txt
| |-Tests
| | |-CMakeLists.txt
| | |-RunAllTests.cpp
| | |-leds_tests
| | | |-leds_tests.cpp
代码目录下的 CMakeLists.txt 文件包含以下代码:
cmake_minimum_required(VERSION 2.8.7)
project(rgb_lamp_unit_tests)
# Check if env variable for CppUTest dir is valid
if(DEFINED ENV{CPP_UTEST_HOME})
message("Found CppUTest home dir at: $ENV{CPP_UTEST_HOME}")
else()
message("Not found CppUTest directory... Finish build!")
return()
endif()
include_directories($ENV{CPP_UTEST_HOME}/include)
# set c & cpp lang
enable_language(C)
enable_language(CXX)
# version number
set(rgb_lamp_unit_tests_VER_MAJOR 1)
set(rgb_lamp_unit_tests_VER_MINOR 0)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
# add sources subdirectories for cmake
add_subdirectory(Tests)
code/Tests 目录中的 CMakeLists.txt 包含:
project(rgb_lamp_unit_tests)
# add include dirs for CppUTestHome
include_directories($ENV{CPP_UTEST_HOME}/include)
# add cpputest framework library
add_library(cpputest_lib STATIC IMPORTED)
set_property(TARGET cpputest_lib PROPERTY IMPORTED_LOCATION $ENV{CPP_UTEST_HOME}/lib/libCppUTest.a)
# build static library from tests modules
add_library(LedDriverTest ./leds_tests/leds_tests.cpp)
# build executable and link all necessary libs
add_executable(RunAllTests RunAllTests.cpp)
target_link_libraries(RunAllTests cpputest_lib LedDriverTest)
leds_tests.cpp 包含:
#include "CppUTest/TestHarness.h" // include cppUtest framework
TEST_GROUP(LedDriver)
{
uint16_t virtualLeds;
void setup()
{
virtualLeds = 0;
}
void teardown()
{
}
};
TEST(LedDriver, LedsAreOffAfterCreate)
{
FAIL("This should fail!");
}
我还注意到,当我将 leds_test.cpp 的内容更改为:
#include <iostream>
void print_something(){
std::cout << "some text" << std::endl;
}
在 RunAllTests.cpp 中做了:
extern void print_something();
int main(int argc, char** argv){
print_something();
//CommandLineTestRunner::RunAllTests(argc, argv);
}
然后我在控制台输出上得到“一些文本”。所以 LedDriverTest.a 正确链接到 RunAllTests 可执行文件。
如果有人可以帮助我,我将不胜感激,因为我想在我的工作中引入单元测试和 tdd。
问候,MF
解决方案
推荐阅读
- sql - 添加新的计算列;Start_DateTime 加上持续时间(时间)作为 End_datetime
- java - 如何获得这种日期格式?
- spring - 如何将前端给出的临时 ID 映射到生成的后端 ID?
- typescript - 无法为 TypeScript 项目打开扩展开发主机
- vim - 为了寻找解释|的统一理论,
, 和 \| 在 Vim 中 - math - 将 3D 平面上的点转换为 2D 坐标系 wrt 相机
- unix - Ansible 更新 sshd 配置文件
- javascript - 未定义的“this.props.navigation.state.props.p”导航反应原生
- corda - 在 Corda 中,运行流程时出现“意外的任务状态”
- oracle - oracle是否存储数据的交易日期?