c cmocka запускает одну и ту же тестовую функцию с разными параметрами

#c #unit-testing #testing #methodology #cmocka

Вопрос:

Я хотел бы написать тест в cmocka и запускать его несколько раз каждый раз с разными параметрами (чтобы я мог тестировать разные варианты ввода). Что — то вроде декораторов Python @parameterized.parameters . Есть способы, которые я могу придумать, например:

  1. Я всегда могу использовать общую вспомогательную функцию и извлечь из нее основную логику теста. Затем вызовите эту вспомогательную функцию из разных тестов.
  2. Я могу объявить массив входных параметров в верхней части теста, затем запустить логику теста в цикле и выполнить итерацию по массиву.
  3. Сделайте то же самое, только объявив входные параметры в функции настройки.
  4. Напишите тест в общем виде, запишите функции настройки для каждого набора параметров, затем выполните одну и ту же функцию тестирования, каждый раз добавляя другую функцию настройки. Таким образом, тест получит значения параметров из настройки. Однако я не уверен, что это хорошая методология

Цель-лучшая ремонтопригодность и масштабируемость.

Простой пример теста для рефакторинга: Допустим, у меня есть функция bool is_even(int a) , и я хочу ее протестировать. В файле тестов:

 static void test_returned_val_is_even(void **state) {
   bool rc = is_even(2);
   assert_true(rc);
}
 

p.s.
Давайте представим, что тест делает гораздо больше, чем просто вызов is_even 🙂

Я блуждал, какие есть другие способы, и если есть методология лучше, чем другая, и почему 🙂 Заранее спасибо.