Zostałem poproszony o wykonanie małego projektu pobocznego, aby dostarczyć prostą aplikację jednemu z naszych klientów. Normalnie pracowałbym nad kodem zaplecza, w którym mam wszystkie moje potrzeby związane z testowaniem, i nie miałem jeszcze wątpliwej przyjemności pisania testów dla GUI, więc nie jest dla mnie jasne, jak powinienem skonfigurować kod testujący i narzędzia dla EXE.
Moim pierwszym instynktem było po prostu dołączenie testów z kodem aplikacji, jednak wymagałoby to podania szeregu zależnych od testu zależności, których poinstruowano mnie, aby nie wysyłać do klienta. Nie jestem również w stanie wydobyć żadnej gotówki za specjalnie zaprojektowane narzędzie testowe, więc muszę użyć narzędzi, które mam pod ręką ( StoryQ , RhinoMocks i NUnit), co naprawdę powinno wystarczyć do przetestowania działania prostej aplikacji GUI. Z tego, co widzę, pozostawia mi to próbę znalezienia właściwej równowagi między utrzymaniem projektu naprawdę prostym lub celowym nadmiernym opracowaniem na potrzeby testów. Wygląda na to, że albo buduję aplikację z logiką biznesową w osobnej bibliotece i testuję bibliotekę, jak zwykle, albo znajduję jakiś inny mechanizm, który pozwala mi na wykonanie pliku bez rozbijania dodatkowych modułów, których projekt aplikacji nie ma naprawdę potrzebuję.
Edycja:
Należy pamiętać, że to pytanie dotyczy sposobu strukturyzowania relacji między NUnit a moim plikiem wykonywalnym - w przeciwieństwie do biblioteki DLL - a nie sposobu oddzielenia prezentacji i logiki biznesowej.
/Edytować
Więc moje pytanie brzmi:
- Czy istnieje konkretna / zalecana metoda konfiguracji prostej aplikacji GUI z testami jednostkowymi, która pozwala mi odpowiednio sprawdzić stan i zachowanie, używając dostępnych narzędzi i bez nadmiernej inżynierii?
- Czy przeoczyłem coś fundamentalnego w sposobie, w jaki NUnit powinien być wywoływany / konfigurowany podczas testowania EXE (w przeciwieństwie do DLL)?
- Czy możesz podać lub wskazać mi przykłady, jak to wszystko osiągnąć?
Zdaję sobie sprawę, że może to być więcej niż jeden sposób, dlatego szukam konkretnych wskazówek dotyczących implementacji w oparciu o twoje doświadczenia.