ESP-IDF: Модульные тесты с Unity и C++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 ESP-IDF: Модульные тесты с Unity и C++

Сообщение Anonymous »

У меня есть проект с несколькими компонентами, которые я хочу протестировать. Я прочитал документацию и начал создавать модульные тесты, используя Unity, для одного из моих компонентов (компонент — Switch.hpp/cpp). Я создал тестовую папку в папке компонента и добавил CMakeLists.txt и тестовый файл в формате .cpp (поскольку мой проект написан на C++.
switch/test/CMakeLists.txt

Код: Выделить всё

idf_component_register(SRC "test_switches.cpp"
INCLUDE_DIRS "."
REQUIRES unity switches)
[/code]
switch/test/test_switches.cpp

Код: Выделить всё

#include "unity.h"
#include "driver/gpio.h"
#include "switches.hpp"

Switches* switches = nullptr;

void setUp(void) {
switches = Switches::get_instance();

switches->set_switch_m1_state(SWITCH_M1_A);
switches->set_switch_m2_state(SWITCH_M2_D);
switches->set_switch_m3_state(SWITCH_M3_D);
switches->set_switch_m4_state(SWITCH_M4_GO);
switches->set_switch_m5_state(SWITCH_M5_F);
}

void tearDown(void) {
// TODO
}

void test_switch_m1(void) {
switches->set_switch_m1_state(SWITCH_M1_B);
TEST_ASSERT_EQUAL(SWITCH_M1_B, switches->get_switch_m1_state());
//TEST_ASSERT_EQUAL(1, gpio_get_level(SWITCH_M1_PIN1));
//TEST_ASSERT_EQUAL(0, gpio_get_level(SWITCH_M1_PIN2));
}

extern "C" void app_main(void) {
UNITY_BEGIN();
RUN_TEST(test_switch_m1);
UNITY_END();
}
используя расширение VSCode для ESP-IDF, с палитрой команд, я использовал команду «ESP-IDF: Unit Test: собрать и запустить модульное тестовое приложение для тестирования». Это создало в корне проекта папку unity-app с проектом для запуска модульных тестов. Я изменил основной файл:
unity-app/main/test_app_main.c

Код: Выделить всё

/*
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/

#include "unity.h"

static void print_banner(const char* text)
{
printf("\n#### %s #####\n\n", text);
}

void app_main(void)
{
print_banner("Unity test runner");
printf("Total test count: %d\n", unity_get_test_count());

UNITY_BEGIN();
unity_run_all_tests();
UNITY_END();

unity_run_menu();
}
А также изменил CMakeLists.txt проекта модульного тестирования:

Код: Выделить всё

# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)
include($ENV{IDF_PATH}/tools/cmake/version.cmake)

# Add newly added components to one of these lines:
# 1. Add here if the component is compatible with IDF >= v4.3
set(EXTRA_COMPONENT_DIRS "../components")

set(TEST_COMPONENTS switches)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(test_app_main)
Когда приложение модульного тестирования было собрано и установлено на полученный мной ESP32-S3 Mini, оно распечаталось и заработало правильно, но не обнаружило тест, который я написал для коммутаторов. Я несколько раз безуспешно пытался изменить имена EXTRA_COMPONENT_DIRS и TEST_COMPONENTS. Кажется, я не могу понять, почему это не работает. Возможно, это потому, что я использовал C++ вместо C, но у меня нет выбора.

Подробнее здесь: https://stackoverflow.com/questions/786 ... nity-and-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ESP-IDF: Модульные тесты с Unity и C++
    Anonymous » » в форуме C++
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • ESP-IDF: Модульные тесты с Unity и C++
    Anonymous » » в форуме C++
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • ESP-IDF: Модульные тесты с Unity и C++
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Ошибка установки расширения ESP-IDF в VSCode на этапе «Установка виртуальной среды Python».
    Гость » » в форуме Python
    0 Ответы
    171 Просмотры
    Последнее сообщение Гость
  • Как `#include` что-то из ESP-IDF?
    Anonymous » » в форуме C++
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»