O wiele lepszą strategią jest niedopuszczanie testów znajomych podczas testów jednostkowych.
Pozwolenie na testowanie znajomych w celu dostępu do prywatnych członków doprowadzi do bazy kodu, która jest trudna do utrzymania. Testy, które łamią się, gdy wewnętrzne szczegóły implementacji komponentu są refaktoryzowane, nie są tym, czego potrzebujesz. Jeśli zamiast tego zostanie podjęty dodatkowy wysiłek, aby uzyskać projekt, w którym można przetestować komponenty za pomocą interfejsu publicznego, otrzymasz testy, które będą wymagać aktualizacji tylko po zaktualizowaniu interfejsu publicznego komponentu.
Testy polegające na gtest/gtest_prod.h
powinny być postrzegane jako oznaka złego projektu.
Co jeśli mam inny test, na przykład BarReturnsOneOnSth. Czy muszę też dodać inną deklarację FRIEND_TEST dla tego testu? – pajton
Tak. Każdy test jest technicznie klasą i musisz zaprzyjaźnić się z nimi po jednym na raz. – hobbit
Jak mogę to zrobić w sposób, który nie zmusza mnie do dołączenia plików nagłówkowych googletest do pliku nagłówkowego z klasą 'Foo'? –