我有一个基于cmake + Qt的项目,它编译得很好,可以在我的Android设备上运行。当使用qDebug时,我看到打印到logcat(在Qt Creator内)的内容。但是Catch 2没有输出。我怀疑,它一直打印到stdout或stderr,这是不可见的。
CMakeLists.txt:
cmake_minimum_required(VERSION 3.14)
project(test LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui)
set(CMAKE_CXX_STANDARD 20)
set(UNITTESTS_SOURCES
main.cpp
)
include(FetchContent)
FetchContent_Declare(catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v3.3.2)
FetchContent_MakeAvailable(catch2)
qt_add_executable(test ${UNITTESTS_SOURCES})
target_link_libraries(test PUBLIC Catch2::Catch2 Qt::Core Qt::Gui)
install(TARGETS test
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
main.cpp
#include <catch2/catch_test_macros.hpp>
#include <catch2/catch_session.hpp>
int main( int argc, char* argv[] ) {
int result = Catch::Session().run( argc, argv );
std::fflush(stdout);
return result;
}
TEST_CASE("hello from catch")
{
CHECK(false);
}
我已经看到,在<catch 2/internal/catch_config_android_logwrite.hpp>中有一些与logcat相关的类,但是断点不会被命中。我链接到qt,但在一个最小的例子中,qt没有调用任何东西。
我怎样才能使Catch 2将其输出打印到logcat?
1条答案
按热度按时间6yjfywim1#
答案很简单。
您必须使用
-o %debug
运行测试,也就是说,将其添加为命令行参数。