Создание эталонных тестовых файлов из контрольных примеров CPPunit для спецификации

Я пишу эталонную реализацию для спецификации, которая занимается преобразованием данных.

У меня есть несколько тестов, которые проверяют, что данные передаются и обратно преобразуются должным образом, что-то вроде:

void test(){
int x[maxTest], y[maxTest], z[maxTest];
fillRandomly(x, testSize);

MyTransform trans = MyTransform(testsize);

trans.apply(x, testSize, y);
trans.remove(y, testSize, z);

for(int i = 0; i < testSize; i++)
CPPUNIT_ASSERT(abs(x[i] - z[i]) < 2);
}

Типы данных сильно различаются между тестовыми примерами и преобразованиями.

Я хотел бы создать файлы, которые содержат ввод / вывод и, возможно, промежуточную стадию, чтобы дальнейшие реализации могли проверить свои результаты.

Есть несколько очевидных способов, которыми я могу сделать эту работу (например, назвать выходной файл и поместить в него все данные), но большинство из них подразумевает возврат к каждому тестовому примеру и целую кучу вставок копий.

Исходя из Java, интроспекция приходит на ум с оберткой, чтобы решить некоторые из моих проблем (автоматическое именование тестовых выходных файлов …), но не все, и мне рекомендовали держаться подальше от этого в C ++ (мнения приветствуются).

Универсальные методы apply / remove также кажутся хорошим кандидатом, но это будет не так просто, так как нет абстрактного типа преобразования и небольшого соответствия между преобразованиями (все еще может быть хорошим вариантом, так как типов преобразования не так много).

Поэтому мне интересно, приходилось ли кому-либо из вас делать что-то подобное и как вы решили это. Я не против изменить все тестовые случаи, если это означает, что позже у меня может быть что-то чистое.

Любой вклад будет высоко ценится.

1

Решение

То, что вы описали, на самом деле не является модульным тестом, и поэтому один CppUnit, вероятно, не ваш лучший выбор.

Похоже, вы пытаетесь сделать три независимые вещи, но объединили их все вместе, чтобы сделать их одновременно. Вы хотите запустить модульные тесты, вы хотите сгенерировать тестовые данные, и вы хотите убедиться, что программа работает с сгенерированными данными, и вы пытаетесь сделать все это в рамках единого модульного тестирования. Но так как он делает так много, вам трудно использовать его повторно.

Попробуйте упростить его до трех приложений тестирования: набор тестов CppUnit, который выполняет только ваши модульные тесты (и эти тесты не должны иметь ничего общего с файлами тестовых данных); генератор тестовых данных; и тестер преобразования. Каждый раз, когда вы строите, вы должны запускать автоматизированные модульные тесты. Когда вы запускаете генератор данных, вы должны автоматизировать выполнение тестера для данных, которые он выводил, чтобы гарантировать, что вы сгенерировали хорошие данные. Затем вы можете предоставить известные проверенные данные и приложение для тестирования своим клиентам.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector