RSS Feed

Testowanie jednostkowe metody prywatnej

Natknąłem się ostatnio na pewien problem.

Jak przeprowadzić test funkcji zadeklarowanej jako private wewnątrz pewnej klasy.

Rozwiązania:

1. Najbardziej oczywiste zmienić dostęp do metody na publiczny.

2. Zadeklarować metodę jako protected i dziedziczyć w innej klasie która obuduje metodę prywatną metodą publiczną [wrapper].

3.Zadeklarować funkcje jako internal i użyć Attrybutu InternalsVisibleTo. Oczywiście jeżeli kod testów trzymamy w tym samym projekcie co nasza metoda to internal już zapewnia nam dostęp do niej. Dobrą praktyką jednak jest trzymanie kodu testującego w oddzielnym Assembly.

Wszystkie te sposoby psują naszą koncepcje która z jakiegoś ważnego powodu zakładała że nasza  funkcja powinna być prywatna.

Pozostają jeszcze :

4.Użyć mechanizmu refleksji.

5. Zastanowić się czy aby na pewno powinniśmy testować metodę prywatną .Z zalożenia testy jednostkowe powinny testować interfejs naszej klasy.Testując metody prywatne narażamy sie na testowanie implementacji co przy zmianie kodu może wymusić zmianę testów.

Więcej Info

Advertisements


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s