Я внедряю автоматизированное тестирование с CppUTest в C ++.
Я понимаю, что в итоге я почти копирую и вставляю логику, которая будет тестироваться в самих тестах, чтобы я мог проверить ожидаемые результаты.
Я делаюэто правильно?должно ли быть иначе?
edit: я попытаюсь объяснить лучше:
Тестируемая единица принимает входные данные A , выполняет некоторую обработку и возвращает выходные данные B
ТакПомимо некоторых проверок черного ящика, таких как проверка того, что выходные данные находятся в ожидаемом диапазоне, я также хотел бы видеть, является ли полученный мной вывод B правильным для ввода A IE, если логика работает, как ожидалось.
Так, например, если единица просто делает A умножить на 2, чтобы выдать B , то в тесте у меня нет другого способапроверка, а затем повторное вычисление A умножить на 2, чтобы сравнить с B , чтобы убедиться, что все прошло хорошо.
Это дублирование, о котором я говорю.
// Actual function being tested:
int times2( int a )
{
return a * 2;
}
.
// Test:
int test_a;
int expected_b = test_a * 2; // here I'm duplicating times2()'s logic
int actual_b = times2( test_a );
CHECK( actual_b == expected_b );
.
PS: Я думаю, я переформулирую это в другом вопросе с моим фактическим исходным кодом.