мне нужно достать значение приватого поля из класса, чтобы протестить работу класса. Суть в том, чтобы при сборке этих тестов включить секцию кода, которая будет являться геттером на это поле(просто написать туда геттер и добавить его в паблик - нельзя). Как я понимаю, то это можно сделать при помощи макросов, но я не понимаю как. Может кто подсказать, как это сделать?
#ifdef MYLIB_TEST int GetField() { return m_SomeField; } #endif // MYLIB_TEST А при компиляции теста определить макрос MYLIB_TEST через систему сборки. В вижле, например, это делается в свойствах проекта
В .cpp файле нужно обернуть реализацию в макрос этот?
> мне нужно достать значение приватого поля из класса, чтобы протестить работу класса. Не нужно
Ага, но выглядеть оно страшно будет😅
Просто напиши туда getter и добавь его в паблик. Ничего страшного не будет. Это можно делать всегда, а не только для тестов (подсказка: если ты убираешь getter, ты меняешь код, и его надо заново тестировать :( )
Менять апи ради тестов так себе идея
Я не предлагаю менять API, я наоборот предлагаю его сделать для тестов и НЕ МЕНЯТЬ!
Можно условно компилировать
Обсуждают сегодня