2008-11-06 9 views
14

.NET. Czy należy umieścić projekty testów jednostkowych w reszcie rozwiązania? A może powinno istnieć rozwiązanie testowe, w którym mieszczą się wszystkie projekty testowe?Projekty testów w roztworze

Mamy wszystkie projekty testowe z naszym rozwiązaniem bazowym kodu ... wydaje się nieco uciążliwe.

Co zazwyczaj robisz?

Odpowiedz

7

W naszym obecnym projekcie postanowiliśmy umieścić wszystkie testy jednostkowe w osobnych projektach. Kod aplikacji i testy są w tym samym rozwiązaniu, ale przynajmniej możemy zbudować (i wdrożyć) wersję bez kodu testowego jednostki.

Wadą tego - jak dotąd - jest to, że czasami testy jednostek nie mogą dotrzeć do niektórych członków kodu aplikacji (chronionych i wewnętrznych), ale to zwykle prowadzi nas do odkrycia, że ​​nasz projekt mógłby zostać ulepszony.

I przypuszczam, że powinienem wskazać podobny wątek Here z więcej odpowiedziami na ten sam/podobny temat.

+1

Wypróbuj InternalsVisibleToAttribute (target Assembly), a następnie testy jednostek mogą uzyskać dostęp do wewnętrznych członków. Prywatne wymaga hackaroundów za pomocą refleksji, więc zawsze zaznaczam je wewnętrznymi, jeśli wymagają niezależnych testów. – cfeduke

+0

(I myślę, że OP robi już to, co zasugerowałeś, zastanawia się, czy rozwiązanie powinno mieć wiele projektów testowych, czy też powinno istnieć oddzielne rozwiązanie, które zawiera tylko testowe projekty.) – cfeduke

+0

cfeduke: dzięki za skierowanie mnie na InternalsVisibleToAttribute! – FOR

2

Zawsze trzymałem je jako część rozwiązania - są one przecież częścią rozwiązania. Możesz mieć wiele rozwiązań dla różnych podejść do wyświetlania twoich projektów, więc rozwiązanie bezdomowe może być tym, co chcesz stworzyć w niektórych przypadkach.

0

Nie używam .NET, ale kiedy rozwijam przypadki testowe jakiegokolwiek rodzaju, trzymam je odizolowane od reszty kodu, aby móc wdrożyć aplikację bez testów. Użytkownik nie potrzebuje, a nawet nie chce tego.

+0

Widząc, jak nie korzystasz z .NET, najwyraźniej nie rozumiesz pojęcia "rozwiązania". Umieszczanie projektów aplikacji i testowanie projektów w tych samych rozwiązaniach NIE oznacza, że ​​testy są uwzględniane w produkcie, który faktycznie dostarczasz użytkownikom końcowym. – raven

1

Nasz kod testowy nie jest wysyłany, ale jest częścią rozwiązania jako całości. Nasz konstruktor oddziela zespoły testowe i podstawowe komponenty. Z perspektywy zarządzania rozwiązaniem wydaje się, że rozwiązanie z ponad 140 projektami jest przytłaczające.

+1

Przeszliśmy przez to i, w pewnym momencie, podzieliliśmy to, co kiedyś było pojedynczym rozwiązaniem z ponad 60 projektami na 2 lub 3 rozwiązania. Projekty testowe nadal znajdują się w tym samym rozwiązaniu, co kod aplikacji, który testują. – FOR

+0

To wydaje mi się solidną poprawką. –

1

Zawsze używamy oddzielnego projektu w ramach tego samego rozwiązania.

Oznacza to, że możemy być pewni (używając odwołań), że kod testu jednostkowego również testuje nasze bezpośrednie odniesienia (zamiast domyślnie wychwycić jakąś widoczność czegoś, ponieważ znajduje się w tym samym zespole - np. "Wewnętrzny")

0

Zobacz projekt swojego projektu. Jeśli znajduje się w dowolnym miejscu blisko układu MVC lub jednej z jego opcji, powinieneś mieć różne poziomy różnych złożeń. Utwórz jeden podzespół testowy dla każdego poziomu swojego projektu.

Nasz projekt testowy zwykle działa w miejsce projektu, który tworzy plik EXE. Nasz projekt EXE to cienka powłoka, która przekazuje informacje i zdarzenie zespołowi wypełnionemu klasami kontrolerów, które zawierają kod większości osób umieszczonych w projekcie EXE. To pozwala projektowi testowemu udawać, że jest plikiem EXE w 90% normalnego procesu testowania.

Wciąż opracowujemy najlepsze rozwiązanie dla rzeczywistych przypadków testowych. Obecnie mamy kilka głównych poziomów naszego narzędzia ramowego, obiektów Applicaiton, struktury interfejsu użytkownika, poleceń, kontrolerów interfejsu użytkownika i EXE. Mamy jeden zestaw dla każdego poziomu z wyjątkiem EXE (który jest testowany ręcznie). Podczas edycji zespołu ładujemy zespół testowy dla tego poziomu. Kiedy musimy zrobić coś, co dotyka każdego poziomu, musimy załadować wszystkie zespoły testowe.

Podczas naszego procesu budowania jednym przyciskiem uruchamiamy projekt testowy exe. (Mamy oddzielne narzędzie do tego).

1

Generalnie umieszczam testy jednostkowe we własnym projekcie i testy integracyjne we własnym projekcie w ramach rozwiązania aplikacyjnego.

Gdzie pracuję, rozważamy wprowadzenie testów internetowych w osobnym rozwiązaniu. Planujemy udostępnić autorski test webowy zespołowi kontroli jakości i nie chcemy, aby te testy stały się odpowiedzialnością za budowanie.

Powiązane problemy