Nie, nie przeprowadzałem testów jednostkowych generowania dokumentów MS Word, ale, jak mówi Ingó Vals, nie powinno to się różnić od jakichkolwiek innych testów jednostkowych.
1) [Opcjonalnie - aby upewnić się, że rozumiesz prawidłowe używanie SDK do swoich potrzeb]. Sprawdź, jak aplikacja powinna obsługiwać pakiet SDK. Napisz kilka skryptów testowych, które naśladują zamierzoną funkcjonalność i upewnij się, że generowane przez nie dokumenty Word spełniają Twoje oczekiwania.
2) Utwórz interfejs (lub interfejsy) zawierający metody odpowiadające funkcjom potrzebnym do generowania dokumentacji. Uwaga: interfejs nie musi oferować pełnej funkcjonalności pakietu SDK OpenXML - tylko funkcje potrzebne dla aplikacji.
3) Tworzenie konkretną implementację interfejsu, który przekazuje połączenia do SDK OpenXML
4) korzystać z utworzonego w aplikacji do wykonywania generacji Document Interface.
5) Użyj NUnit i NMock (lub podobnych) do napisania testów jednostkowych, które napędzają warstwę generacyjną aplikacji. Testy te powinny wykorzystywać fałszywy interfejs, a nie instancję konkretnej implementacji. Możesz teraz potwierdzić w swoich testach, że twoja warstwa generacyjna zachowuje się zgodnie z oczekiwaniami.
Dlaczego testy jednostkowe OpenXML muszą różnić się od standardowych. Czy próbujesz sprawdzić, czy dokument może zostać otwarty słowem lub czy będzie wyglądać dobrze? –
Nie jest to rozbieżne, tylko technicznie trudne. Typowym testem jest Arrange-Act-Assert. Tak więc pytanie brzmi: jak możemy z łatwością zrobić ostatnią część - Asersem. Być może za pomocą jakiegoś mechanizmu automatyzacji słów lub infrastruktury automatyzacji interfejsu użytkownika, ale nie widzę łatwego sposobu na to. Tak więc kończę testami generującymi raport i otwierającymi się w słowie, więc ręcznie sprawdzam, czy raport jest w porządku. To nie jest "czysty" test jednostkowy, ale lepszy niż uruchomienie pełnej aplikacji do generowania potrzebnych raportów. Interesuje mnie również testowanie kodu, który działa bezpośrednio z Open XML, wszystkie inne części, które rozdzieliłem i przetestowałem zwykłymi testami jednostkowymi. – Andrii