2013-02-19 3 views
5

Czy istnieje standardowa najlepsza praktyka w zakresie kodu testowania jednostkowego, który generuje grafikę? Pracuję konkretnie z Javą i jUnit, ale myślę, że ta koncepcja miałaby zastosowanie także w innych językach.Jednostka Graficzna testu

Dotychczas najlepiej, że mogę wymyślić korzysta Mockito mock obiektu Graphics i dochodzić wstępnie obliczona takie rzeczy jak (Pseudokod):

assert that graphics.drawString was called with ("abc", 50, 100) 
assert that graphics.setBackgroundColor was called with Color.RED 

Chociaż to wszystko jest dobrze, Zastanawiałem się, czy jest to właściwa droga, czy też istnieją ustalone praktyki testowania kodu graficznego.

+1

Czy rozważałeś pobranie obrazu z grafiki i porównanie z plikiem obrazu odczytanym z zasobów? –

+0

@guido - To dobra sugestia, której nie odkryłem. Zdecydowanie warte zobaczenia. –

Odpowiedz

3

Nie wiem, czy jest to ustalona praktyka, ale rozważyłbym projekt SVGGraphics2D z projektu Batik w celu wyśmiewania grafiki i porównania wygenerowanych plików SVG.

Zaletą porównywania plików binarnych jest to, że pliki SVG są relatywnie czytelnymi plikami XML, więc jeśli te dwa pliki nie są równe, nie tylko wiadomo, że jest problem, ale także masz dobrą wskazówkę co do dokładnego miejsca problemu.

Zaletą rozwiązania jest to, że te pliki SVG mogą być przeglądane (na przykład w przeglądarce), więc testowany scenariusz jest samodokumentowany.

+0

Będę musiał zajrzeć do tej klasy. Lubię dźwięk porównywania plików xml w przeciwieństwie do surowych kontekstów graficznych. –

1

Można użyć czegoś podobnego do Mockito i wyśmiać swój obiekt graficzny. Następnie możesz sprawdzić, czy metody drawString i setBackgroundColor zostały wywołane. Biorąc przykłady z here

coś takiego:

import static org.mockito.Mockito.*; 


Graphics graphics= mock(Graphics.class); 
//Run you code .... 

//verification that the methods were called 

verify(mockedList).drawString ("abc", 50, 100); 
1

jak wspomniano, można przetestować swoje obliczenia i wywołanie graficznego API. to łatwe. ale sprawdzenie czy poprawnie używasz api graficznej (i produkuje poprawne zdjęcie), może być naprawdę trudne. Wiem, że niektóre firmy tworzą zrzuty ekranu wygenerowanych grafik (np. strony internetowej) i porównują je z oczekiwanym wynikiem przy użyciu wielu złożonych metryk. ale zwykle nie jest to sposób na obniżenie kosztów, ale roczny cel jakiegoś menedżera (powiedzmy "automatyzacja procesów"). więc zastanów się dwa razy zanim pójdziesz tą drogą - zwykle nie jest to warte bólu