Niedawno zauważyłem, że dodanie [TestInitialize] do metody chronionej w zestawie .NET nie było przestrzegane, ale jeśli podałem tę metodę do publicznej wiadomości, zostanie ona wywołana przez moduł uruchamiający testy jednostkowe (w tym przypadku Resharper). Zauważyłem to kilka razy w przeszłości za pomocą metod testowych.
Technicznie rzecz biorąc, tak samo łatwo jest zastanowić się nad metodą prywatną jak metodą publiczną. W rzeczywistości refleksja jest metodą stosowaną do jednostkowego testowania metod prywatnych.
Dlaczego więc muszę upublicznić wszystkie moje metody testów jednostkowych?
.net
unit-testing
Justin Dearing
źródło
źródło
setAccessible
którymi może zostać zablokowany przez jakiegoś niestandardowego SecurityManageraOdpowiedzi:
Powinieneś przetestować, co robi klasa , a nie jak to robi.
Jeśli chodzi o „świat zewnętrzny”, to wszystko, co klasa udostępnia publicznie; twoje środowisko testowe przyjmuje to samo założenie.
Testując coś „mniej” niż publiczne, zagłębiasz się w wewnętrzną implementację klasy, co jest złym pomysłem.
źródło
Zasadniczo najlepiej jest uzyskiwać dostęp tylko do metod publicznych - podczas tworzenia klasy tworzysz również umowę określającą, które inne klasy powinny uzyskać dostęp do Twojego kodu. Więc odpowiedź jest najprawdopodobniej tylko dlatego, że jest konwencją.
źródło