Новичок в модульном тестировании, хотел бы получить какие-то данные по этому модульному тесту - PullRequest
0 голосов
/ 14 июля 2020
• 1000 значение, как мне его правильно протестировать? У меня есть пример ниже ...
int add(int a, int b) {
     return a + b;
}

int actual = add(1,2);
int expect = 1 + 2; 

TEST_ASERT_EQUAL_INT(expect, actual);

Предполагая, что я наивен и не знаю 1 + 2 = 3. Будет ли считаться хорошей практикой выполнение той же арифметики c, что и функция, которую я тестирую для получения ожидаемого значения?

1 Ответ

1 голос
/ 14 июля 2020

TL; DR: Нет.

Ваше ожидание должно быть жестким в коде и каким-то образом не рассчитываться, два балла здесь:

  1. Если вы воссоздаете сложный расчет в своем тесте кода, у вас нет "достаточно глупого" теста, чтобы вы действительно могли убедиться, что результат соответствует ожиданиям
  2. Если вы используете SUT (Тестируемая система) для генерации вычисленного / ожидаемого значения в тесте, вы все еще не проверяем, что ваши ожидания действительно выполняются.

Я рекомендую всегда ожидать фиксированных значений. Теперь в примере с 1 + 2 = 3 это просто, и вы должны просто написать свой тест таким образом, чтобы вы установили int expected = 3.

Однако, как вы уже упоминали, это может быть немного более сложная операция, например создание ха sh или что-то в этом роде. В этом случае я рекомендую вам выполнить три шага, чтобы убедиться, что ваша SUT выполняет то, что она должна делать:

  1. Сгенерировать выходное значение с помощью SUT
  2. Проверить (например, вручную, в противном случае вы бы сделали это вручную) правильность этого значения
  3. Если (!) шаг 2 сработает, используйте это значение в качестве фиксированного ожидания в модульном тесте.

Сделайте это пару раз (то есть используйте разные значения ввода / вывода), и вы можете быть чертовски уверены, что ваша SUT делает то, что должна.

...