Ответ 1
Я придумал простое, но приемлемое решение:
Просто распечатайте дополнительную строку пропуска с помощью макроса:
#define CHECK_FEATURE_OR_SKIP(FEATURE_NAME) \
do{\
if(!TypeParam::hasFeature(FEATURE_NAME)) {\
std::cout << "[ SKIPPED ] Feature " << #FEATURE_NAME << "not supported" << std::endl;\
return;\
}\
} while(0)
Тогда я могу просто использовать этот макрос:
TYPED_TEST_P(TheTest, ATest){
CHECK_FEATURE_OR_SKIP(MyFeatureXY);
// ... real test code goes here
}
Результат будет выглядеть следующим образом:
[ RUN ] XYZ/TheTest/0.ATest
[ SKIPPED ] Feature MyFeatureXY not supported
[ OK ] XYZ/TheTest/0.ATest (0 ms)
Единственный небольшой недостаток заключается в том, что все еще существует строка OK
, но, по крайней мере, очевидно, что тестовый пример был пропущен, а также отсутствующая функция отображается аккуратно. Другой недостаток заключается в том, что графический пользовательский интерфейс GUI не будет отображать пропуски, которые аккуратно, но меня это не волнует, поскольку я использую только инструменты командной строки для запуска тестовых случаев.