2013-02-19 17 views
5

Có cách thực hành tốt nhất tiêu chuẩn cho mã thử nghiệm đơn vị tạo đồ họa không? Tôi đang làm việc đặc biệt với Java và jUnit, nhưng tôi nghĩ khái niệm này cũng sẽ áp dụng trong các ngôn ngữ khác.Đồ họa thử nghiệm đơn vị

Cho đến nay, tốt nhất mà tôi có thể đưa ra là sử dụng Mockito để chế nhạo đối tượng Graphics và khẳng định điều tính trước như (giả):

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

Trong khi điều này là tất cả tốt và tốt, Tôi đã tự hỏi nếu điều này là đúng cách để đi về nó hoặc nếu có nhiều thực hành thành lập để thử nghiệm mã đồ họa.

+1

bạn có xem xét việc lấy hình ảnh từ đồ họa và so sánh với tệp hình ảnh được đọc từ tài nguyên không? –

+0

@guido - Đó là một gợi ý hay mà tôi chưa khám phá. Chắc chắn đáng xem. –

Trả lời

3

Tôi không biết nếu điều này được thiết lập thực hành, nhưng tôi sẽ xem xét một SVGGraphics2D từ dự án Batik để mô phỏng đồ họa và so sánh các tệp SVG được tạo.

Lợi thế so sánh tệp nhị phân là tệp SVG là tệp XML tương đối có thể đọc được, vì vậy nếu hai tệp không bằng nhau, bạn không chỉ biết rằng có sự cố, mà còn nhận được gợi ý tốt về địa điểm chính xác của vấn đề.

Lợi thế so với giải pháp của bạn là có thể xem các tệp SVG này (ví dụ: trong trình duyệt), vì vậy, kịch bản thử nghiệm được tự ghi lại.

+0

Tôi sẽ phải xem xét lớp học này. Tôi thích âm thanh so sánh các tệp xml như trái ngược với ngữ cảnh đồ họa thô. –

1

Bạn có thể sử dụng một cái gì đó như Mockito và giả lập đối tượng đồ họa của mình. Sau đó, bạn có thể xác minh rằng các phương thức drawString và setBackgroundColor được gọi. Lấy một số ví dụ từ here

Cái gì như:

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

như bạn đề cập, bạn có thể kiểm tra tính toán của bạn và gọi api đồ họa. thật dễ dàng. nhưng kiểm tra nếu bạn đang sử dụng đồ họa api một cách chính xác (và sản xuất hình ảnh chính xác), có thể thực sự khó khăn. tôi biết một số công ty tạo ảnh chụp màn hình của đồ họa được tạo (ví dụ: trang web) và so sánh nó với kết quả mong đợi bằng cách sử dụng nhiều số liệu phức tạp. nhưng thông thường nó không phải là một cách để giảm chi phí nhưng mục tiêu hàng năm của một người quản lý (hãy nói 'quá trình tự động hóa'). vì vậy hãy suy nghĩ kỹ trước khi bạn đi theo cách này - thường không đáng để đau đớn