6

グラフィックスを生成するコードの単体テストの標準的なベスト プラクティスはありますか? 私は特に Java と jUnit を扱っていますが、この概念は他の言語にも当てはまると思います。

これまでのところ、私が思いつく最善の方法は、Mockito を使用してGraphicsオブジェクトをモックし、(疑似コード) などの事前に計算されたものをアサートすることです。

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

これはすべてうまくいっていますが、これが正しい方法なのか、グラフィカル コードをテストするための確立された方法があるのか​​ どうか疑問に思っていました。

4

3 に答える 3

4

これが確立された慣行であるかどうかはわかりませんが、グラフィックをモックし、生成されたSVGファイルを比較するために、Batik プロジェクトのSVGGraphics2Dを検討します。

バイナリ ファイルを比較する利点は、SVG ファイルが比較的読みやすい XML ファイルであることです。そのため、2 つのファイルが等しくない場合、問題があることがわかるだけでなく、問題の正確な場所についての良いヒントも得られます。

ソリューションよりも優れている点は、これらの SVG ファイルを (ブラウザーなどで) 表示できるため、テスト済みのシナリオが自己文書化されていることです。

于 2013-02-19T16:03:09.010 に答える
2

Mockito のようなものを使用して、グラフィックス オブジェクトをモックできます。次に、メソッド drawString および setBackgroundColor が呼び出されたことを確認できます。ここからいくつかの例を取り上げます

何かのようなもの:

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);
于 2013-02-19T16:05:16.807 に答える
2

おっしゃったように、計算をテストしてグラフィック API を呼び出すことができます。簡単だ。しかし、グラフィックス API を正しく使用しているかどうか (および正しい画像を生成しているかどうか) を確認することは、非常に困難な場合があります。一部の企業は、生成されたグラフィック (Web ページなど) のスクリーンショットを作成し、多くの複雑な指標を使用して期待される結果と比較しています。しかし、通常、これはコストを削減する方法ではなく、一部のマネージャーの年間目標 (「プロセスの自動化」としましょう) です。この道を行く前によく考えてください - 通常は苦労する価値はありません

于 2013-02-19T17:11:02.640 に答える