Test read powinien polegać na tym, że masz jakiś predefiniowany input.file i sprawdzasz, czy to co read wypluło jest zgodne z tym, co według ciebie wypluć powinno.
W przypadku write masz sytuację odwrotną - czyli wrzucasz jakąś strukturę danych do write, tworzy ci się jakiś output.file, i na końcu sprawdzasz, czy ten plik jest zgodny z tym, co być powinno.
No ale teraz wg wcześniejszej logiki @Riddle testujesz prywatną implementację read / write. Bo zapis do pliku to przecież szczegół implementacyjny ;)
I tak, dopuszczam możliwość, że istnieją jakieś bardzo wyjątkowe sytuacje, w których monitorowanie prywatnych pól będzie uzasadnione. Ale są to właśnie wyjątkowe sytuacje, a co do zasady powinno się tego unikać.
A widzisz, i być może tu mamy różnicę poglądów wynikającą z rodzaju oprogramowania jaki piszemy.
Ja piszę oprogramowanie, które jest na ścieżce krytycznej wielu systemów i ma dość wysoko podniesioną poprzeczkę niezawodnościową.
Monitorowanie (metryki) oraz testowanie wewnętrznego stanu systemu (zarówno offline w postaci testów jak i online w postaci asercji działających na produkcji), plus bardzo rygorystyczne założenia wewnętrzne dotyczące budowy tych szczegółów implementacyjnych to podstawa budowy niezawodnych systemów.
Popatrz sobie na to zdjęcie:
(obraz za wikipedia, Airbus A340)
Dlaczego tu jest taki pierdyliard przełączników, manipulatorów, wskaźników i ekranów?
Przecież interfejs publiczny samolotu jest dużo prostszy:
- wolant / joystick / pedały do obsługi powierzchni sterowych
- przepustnica do sterowania ciągiem
- wajcha do wysuwania / wsuwania klap
- podstawowa orientacja w przestrzeni: prędkość, pułap, sztuczny horyzont / busola
- hamulce, podwozie
- parę drobiazgów aby to wszystko włączyć / wyłączyć
A właściwie to można to nawet bardziej zredukować i zrobić samolot z trybem tylko automatycznym.
Nakręcisz sobie prędkość / wysokość / azymut na AP i lecisz. A lądujesz na ILS kat 3. Dziecko by umiało. :D
Po grzyba Ci wskaźnik ciśnienia płynu hydraulicznego, prędkość wirnika silnika 2, wskazanie ilości paliwa w zbiornikach, czy aż pięć odczytów wysokości?
Po co wskaźnik wysunięcia podwozia? :D
Myk polega na tym, że jak cokolwiek pójdzie nie tak, to musisz mieć możliwość po pierwsze:
- wiedzieć że coś poszło nie tak, zanim powiedzą Ci o tym testy end-to-end (rozbiłeś się, koniec)
- wiedzieć również możliwie najdokładniej co nie działa aby móc zareagować adekwatnie i szybko