Как начать писать модульные тесты на Встроенное приложение C прежней версии - очень сильно связанные модули?

Я в настоящее время работаю над кодовой базой, которая никогда не имела никаких модульных тестов, записанных на нем. Это было записано для 16-разрядного процессора Embedded, и я хотел бы начать добавлять модульные тесты на весь код, который я пишу, как минимум и затем расширяю это до других частей кода.

Моя проблема с этим, я нашел, что каждый модуль (.c файл) на прикладном уровне, кажется, сильно связывается в другие файлы C в проекте. Для любого данного файла это может быть где угодно от 2-10, спиливает.

  1. Как я начинаю писать модульные тесты?
  2. Что лучшие/быстрые/больше всего эффективные пути состоят в том, чтобы удалить это плотное соединение?
  3. Также модульные тесты будут выполнены на ПК, (32 бита), и встроенный код для 16-разрядного процессора. Как я удостоверяюсь, что это заботится о при портировании кода на ПК?
7
задан unwind 28 June 2010 в 07:44
поделиться

2 ответа

Что касается №3 - убедитесь, что он переносится на ПК, вот стратегия, которую я использую:

Сначала пройдите по встроенному коду и измените любое 'int' или 'unsigned long' на 'int16' или uint32 (или любое другое соглашение по вашему выбору).

Оберните раздел во встроенный заголовок, где вы определяете типы внутри условия:

#ifndef CORE_TYPE_DEFINITIONS
#define CORE_TYPE_DEFINITIONS
typedef long int16;
/*...*/
#endif

создайте файл «PC_Types.h», который определяет те же типы для ПК.

#ifdef CORE_TYPE_DEFINITIONS
#error "Core Types already defined"
#else
#define CORE_TYPE_DEFINITIONS
typedef short int16;
/*...*/
#endif

В проекте для ПК создайте оболочку для каждого встроенного файла c, которая содержит следующее:

#include "PC_Types.h"
#include "ModuleX.c"  //the file under test

#include "TestHarness.h"   //verification functions

int TestModuleXUnit1(void)
{
   /* setup */
   /* call Unit1(); */
   /* verify post-conditions */
   return result;
}

Обертывая каждый файл, вы получаете все связанные функции, доступные по мере необходимости. # включение исходного файла исходного кода в файл оболочки позволяет добавлять обновления встроенного кода непосредственно из системы управления версиями без каких-либо изменений. Добавление тестовых функций после включенного источника дает тестовый код полный доступ ко всем функциям модуля, даже если у них нет общедоступного заголовка.

4
ответ дан 7 December 2019 в 05:17
поделиться
4
ответ дан 7 December 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: