[Oczywiście, pytanie nie jest ograniczony do konkretnego „przyjaciel” realizacji, prosimy jednak podkreślić specyfikę wdrożenia stosownych przypadkach]Korzystanie z "przyjaciel" - deklaracje do testowania jednostkowego. Kiepski pomysł?
Czytając pytań bez odpowiedzi, natknąłem się atrybutem InternalsVisibleTo
:
Określa typów, które są zwykle widoczny tylko w bieżącym montażem są widoczne innego zespołu.
C# Programming Guide na MSDN posiada sekcję Friend Assemblies opisujący jak wykorzystać atrybut, aby umożliwić korzystanie z internal
metod i typów do innego zespołu.
Zastanawiam się, czy byłoby dobrym pomysłem, aby użyć tego do stworzenia "ukrytego" interfejsu do oprzyrządowania biblioteki do użycia przez zespół testujący jednostkę. Wydaje się, że zwiększa on łączność masowo w obu kierunkach (kod testowy w zespole produkcyjnym, wewnętrzna wewnętrzna wiedza na temat zespołu produkcyjnego w kodzie testowym), ale z drugiej strony może pomóc w tworzeniu drobnoziarnistych testów bez zaśmiecania interfejsu publicznego.
Jakie są Twoje doświadczenia z używaniem deklaracji przyjaciół podczas testowania? Czy to był twój Srebrny Bullet, czy też rozpoczął Marsz Śmierci?
Dzięki za podpowiedź na temat silnego nazewnictwa! Nie byłem (jeszcze) tego świadomy, ale ponieważ uważam, że wszystkie moje zgromadzenia muszą być mocno nazwane wydaniem, nie uważam tego za prawdziwy problem. –