Pico Unit Test
Framework юнит-тестирования микроконтроллеров RP2040 в Pico SDK C++
Установка
Скачайте папку DUnitTest в корневую папку вашего проекта.
CMakeLists
Если используете UART для вывода в Serialport monitor
add_subdirectory(DUnitTest)
pico_enable_stdio_uart(YourProjectName 1)
target_link_libraries(YourProjectName pico_stdlib DUnitTest)
Если используете USB
add_subdirectory(DUnitTest)
pico_enable_stdio_usb(YourProjectName 1)
target_link_libraries(YourProjectName pico_stdlib DUnitTest)
Include
#include "DUnitFramework.h"
Создание теста
IMPLEMENT_UNIT_TEST(YourTestName)
{
//Your test body here
return true;
}
Латентные команды
Латентные команды выполняются после теста, в котором они были объявлены. Создание латентной команды
IMPLEMENT_LATENT_COMMAND(LatentCommandName)
{
//Command Body
return false;
}
Латентная команда будет вызываться до тех пор, пока не вернет true. Добавление латентной команды в тест
IMPLEMENT_UNIT_TEST(YourTestName)
{
ADD_LATENT_COMMAND(LatentCommandName);
//Your test body here
return true;
}
Логирование
D_LOG(ELogVerbosity, "LogMessage");
Для форматирования сообщения используйте функцию TEXT(). Функция имеет такой же синтаксис как printf()
std::string TEXT(const char* Format, Args...args)
Тест проваливается если уровне логирования WARNING или ERROR
Тестирование
TestTrue("FailMessage", bool Value); // Тест считается проваленным если Value == false;
TestFalse("FailMessage", bool Value); // Тест считает проваленным если Value == true;
TestEqual("FailMessage", TestValue, ExpectedValue); // Тест считается проваленным если TestValue != ExpectedValue
TestNotEqual("FailMessage", TestValue, ExpectenValue); // Тест считается проваленным если TestValue == ExpectedValue
Запуск тестов
Для запуска тестов используйте макрос RUN_TEST;
int main()
{
RUN_TESTS;
while(true)
{
}
}
После завершения тестов в монитор серийного порта выводится лог.
------------------------------TESTS STARTED------------------------------
LOG CheckMaxValue:
ERROR: Positive number and zero
ERROR: Two equal positive numbers
ERROR: Two positive numbers
-------------------------------------------------------------------------
Test CheckMaxValue is FAILED in 10 ms
General time: 10 ms
-----------------------------TESTS COMPLETED-----------------------------
PUTTY SERIAL PORT MONITOR
Если вы используете Putty Monitor, можно включить вывод в Log цветного текста; Добавьте строку в CMake файл
add_compile_definitions(PUTTY_SERIAL_MONITOR)