2013-02-19 63 views
5

क्या ग्राफिक्स उत्पन्न करने वाले यूनिट परीक्षण कोड के लिए मानक मानक है? मैं विशेष रूप से जावा और जुनीट के साथ काम कर रहा हूं, लेकिन मुझे लगता है कि अवधारणा अन्य भाषाओं में भी लागू होगी।यूनिट टेस्ट ग्राफिक्स

अब तक सबसे अच्छा है कि मैं के साथ आ सकते हैं Graphics वस्तु नकली और जोर इस तरह के (स्यूडोकोड) के रूप में पूर्व गणना की बातें करने के Mockito उपयोग कर रहा है:

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

यह सब अच्छी तरह से और अच्छा है, मैं सोच रहा था कि क्या यह इसके बारे में जाने का सही तरीका है या यदि ग्राफिकल कोड का परीक्षण करने के लिए और अधिक स्थापित प्रथाएं हैं।

+1

क्या आपने ग्राफिक्स से छवि प्राप्त करने और संसाधनों से पढ़ने वाली छवि फ़ाइल की तुलना करने पर विचार किया है? –

+0

@guido - यह एक अच्छा सुझाव है जिसे मैंने नहीं खोजा है। निश्चित रूप से एक लायक लायक है। –

उत्तर

3

मैं अगर यह अभ्यास की स्थापना की है पता नहीं है, लेकिन मैं ग्राफिक्स मजाक, और की तुलना उत्पन्न SVG फ़ाइलों के लिए बाटिक परियोजना से एक SVGGraphics2D पर विचार करेंगे।

बाइनरी फाइलों की तुलना करने का लाभ यह है कि एसवीजी फाइलें अपेक्षाकृत पठनीय एक्सएमएल फाइलें हैं, इसलिए यदि दो फाइलें बराबर नहीं हैं, तो आप केवल इतना ही नहीं जानते कि कोई समस्या है, लेकिन आपको सही स्थान के बारे में भी एक अच्छा संकेत मिलता है समस्या का।

आपके समाधान पर लाभ यह है कि इन एसवीजी फ़ाइलों को देखा जा सकता है (उदाहरण के लिए ब्राउज़र में), इसलिए परीक्षण परिदृश्य स्वयं-दस्तावेज है।

+0

मुझे इस कक्षा में एक नज़र रखना होगा। मुझे कच्चे ग्राफिक्स संदर्भों के विपरीत xml फ़ाइलों की तुलना करने की आवाज पसंद है। –

1

आप मॉकिटो जैसे कुछ का उपयोग कर सकते हैं, और अपने ग्राफिक्स ऑब्जेक्ट का मज़ाक उड़ा सकते हैं। फिर आप यह सत्यापित कर सकते हैं कि ड्रॉस्ट्रिंग और सेट बैकग्राउंड कॉलर के तरीके कहा गया था। से here

कुछ जैसे कुछ उदाहरण ले रहा है:

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

के रूप में आप उल्लेख किया है, तो आप अपने गणना परीक्षण कर सकते हैं और ग्राफिक्स एपीआई बुला। यह आसान है। लेकिन जांच कर रहे हैं कि क्या आप ग्राफिक्स एपीआई का सही ढंग से उपयोग कर रहे हैं (और सही तस्वीर का उत्पादन), वास्तव में मुश्किल हो सकता है। मुझे पता है कि कुछ कंपनियां जेनरेट किए गए ग्राफिक्स (जैसे वेब पेज) के स्क्रीनशॉट बनाती हैं और कई जटिल मीट्रिक का उपयोग करके अपेक्षित परिणाम के साथ तुलना करें। लेकिन आमतौर पर यह लागत को कम करने का कोई तरीका नहीं है लेकिन कुछ प्रबंधक का वार्षिक लक्ष्य (मान लें कि 'प्रक्रिया स्वचालन')। तो इस तरह से जाने से पहले दो बार सोचें - आम तौर पर यह दर्द के लायक नहीं है