Есть ли способ не скомпилировать тело функции модульного теста в сборке релиза без использования #ifdef? - PullRequest
0 голосов
/ 31 января 2020

Допустим, у нас много функций модульного тестирования только для отладочной сборки. Мы вообще не хотим компилировать эти функции в сборке релиза. Есть ли какой-нибудь способ, кроме как оборачивать функции модульного теста каждый раз с #ifdef _DEBUG?

#ifdef _DEBUG
void testfunc_xxx() {
  ...
}
#endif

Например, у нас может быть макрос

#ifdef _DEBUG
#define UNITTESTFUNC(name) void name()
#else
#define UNITTESTFUNC(name) template<typename T> void name()
#endif

UNITTESTFUNC(testfunc_xxx) {
  ...
}

Но это зависит от задержанного анализа шаблона , Есть ли лучший способ сделать это? Спасибо!

1 Ответ

3 голосов
/ 31 января 2020

Существует другая школа мысли, которая отделяет производственный код от всего кода модульного теста, сохраняя каждый в своей собственной библиотеке.

Затем код модульного теста может быть встроен в его собственное приложение, вызывая производственный код как библиотека.

...