У меня есть макрос, который принимает функцию как аргумент, и функцию, которая берет его из макроса.
template <typename Function>
void SomeFunc(const Function func, const string func_str) {
}
#define SomeMacross(func) SomeFunc((func), #func)
void SomeTest() {
}
int main()
{
SomeMacross(SomeTest);
}
Итак, как правильно выполнить этот модульный тест? Как я могу проверить, что эта функция void работает нормально?
2 ответа
Ну, у каждой процедуры есть синхронизации и источники. Источниками в данном случае являются параметры. Функция должна отправлять информацию или что-то активировать в качестве синхронизации; иначе это было бы тривиальной рутиной. Вы проверяете эти результаты, однако они могут выйти.
Предполагая, что SomeTest является тестируемой здесь функцией, она, вероятно, будет читать и изменять глобальные переменные или выполнять системные вызовы каким-либо образом, в противном случае вы будете тестировать функцию, ничего не делая, поскольку она не имеет ни параметров, ни возвращаемого значения.
Вы ищете тест, адаптированный специально к побочным эффектам, которые должен иметь SomeTest. Если SomeTest должен создать файл "sometest.dat" после успешного завершения, ваш тест должен убедиться, что файл не существует до вызова SomeTest, и проверить, что файл существует после завершения SomeTest.
Вам в основном не хватает такой функции:
void SomeTestTest() {
// prepare execution (i.e. delete previous test file)
SomeTest()
assert( postconditions ); // i.e.
}
Возможно, вы захотите изучить Unit Test Frameworks для этого, особенно если вы не хотите работать с простыми утверждениями.
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .
SomeTest
?SomeFunc