Catch2 с CMake и Visual Studio - PullRequest
       33

Catch2 с CMake и Visual Studio

0 голосов
/ 01 июня 2019

Я пытаюсь настроить Catch2 тестовый фреймворк для библиотеки, которую я построил.Я использую CMake и Visual Studio 2017.

Моя структура проекта:

executable-project/
|-- library
      |--include/
      |    |--SUT.h 
      |--src/
      |    |--SUT.cpp
      |--tests/
      |    |--catch.hpp
      |    |--SUTTest.cpp
      |CMakeLists.txt
|include/
|src/
| |--main.cpp
|CMakeLists.txt

SUT.h, SUT.cpp и SUTTest.cpp просто тестируют факториальную функцию, определенную на основе пример .

Мой файл CMakeLists.txt в библиотеке:

cmake_minimum_required (VERSION 3.8)

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
file(GLOB TEST_FILES "${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp")

add_library(MY_LIBRARY ${HEADER_FILES} ${SOURCE_FILES} ${TEST_FILES})

target_include_directories(MY_LIBRARY PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")

source_group("Test Files" FILES ${TEST_FILES})

Файл SUTTest.cpp:

#define CATCH_CONFIG_MAIN

#include "catch.hpp"
#include "SUT.h"

TEST_CASE("Factorials are computed", "[factorial]")
{
    SUT sut;

    REQUIRE(sut.Factorial(0) == 0);
    REQUIRE(sut.Factorial(1) == 1);
    REQUIRE(sut.Factorial(2) == 2);
    REQUIRE(sut.Factorial(3) == 6);
    REQUIRE(sut.Factorial(10) == 3628800);
}

«исполняемый проект» просто использует библиотеку (это фактическое приложение).CMakeLists.txt в этом проекте динамически связывает библиотеку с ним.

Когда я собираю это решение в Visual Studio, сборка работает нормально, а когда я вручную проверяю функциональность библиотеки, она тоже работает нормально.

Однако тест не проходит, несмотря на утверждение, что Factorial(0) == 0.Кроме того, Visual Studio не обнаруживает тесты в папке тестов.То, чего я пытаюсь достичь, это:

  1. Когда я нажимаю на Build в Visual Studio, тесты, которые должны быть выполнены как часть сборки.

  2. (Необязательно), чтобы Visual Studio могла обнаруживать тесты.

...