Zakładając, że mówimy o statycznych funkcjach C, najłatwiejszym rozwiązaniem jest sprawienie, by funkcje były niestatyczne podczas kompilowania wersji debugowania. Oznacza to, że symbole będą dostępne do użycia w testach jednostkowych. Działa to tylko wtedy, gdy nie ma aliasingu symboli.
Jeśli zdefiniować symbol DEBUG
na wszystkich debugowania buduje wtedy coś takiego:
#ifdef DEBUG
#define debug_export
#else
#define debug_export static
#endif
a następnie zdefiniować funkcje statyczne jak to
debug_export void foo(void)
{
...
}
i albo zawierają deklaracje warunkowo w pliku nagłówka lub ręcznie zaimportuj je do pliku testu urządzenia:
extern void foo(void);
Inne sposoby obejścia tego problemu to włączenie testów jednostkowych do pliku źródłowego (odrobina bałaganu, jeśli wymknie się spod kontroli), nie przeszkadza to jednostce testującej funkcję (odrobina wyładowania) lub oznaczenie Funkcja ta nie jest statyczna i zapewnia, że testy jednostek są częścią tego dynamicznego obiektu.
Możliwy duplikat [Jak przetestować klasę, która ma prywatne metody, pola lub klasy wewnętrzne?] (Https://stackoverflow.com/questions/34571/how-do-i-test-a-class-that -has-private-methods-fields-or-inner-classes) – Raedwald