Проблема Catch Test Framework: невозможно использовать Catch :: Session ()

Я получаю эту ошибку в файле C ++, где я пишу несколько тестов:

error: no member named 'Session' in namespace 'Catch'
testResult = Catch::Session().run(test_argc, test_argv);
~~~~~~~^

Глядя на файл заголовка catch.hpp, я заметил, что код, который должен реализовывать функцию-член Session (), выделен серым цветом, возможно, из-за где-то #ifdef, который я не могу найти.

Есть ли макрос для использования в классе Session?

Версии Catch: 1.5.3 и 1.5.6.

Ссылка: https://github.com/philsquared/Catch/blob/master/docs/own-main.md

2

Решение

Вы пытаетесь вызвать конструктор Catch::Session из файла, где вы не определяете свой собственный main выполнить. Согласно документация по определению собственного основного, должен быть только один случай Catch::Session:

Catch::Session session; // There must be exactly once instance

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

1

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

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

По вопросам рекламы [email protected]