私はJavaFxで軽量塗装アプリケーションを作成しています。 私はLayerController
クラスでいくつかの問題を抱えていて、その方法はaddLayer
などです。そこで、JUunitのテストケースを書くことは、私のメソッドの正しさをチェックするのに良い考えです。物語を短くするために、私はPaintGraphics
と呼ぶ自画像クラスのGraphicsContext
を使ってCanvas
に絵を描いています。このクラスはすべてのペイントを行います。 LayerController
には、レイヤーの作業を行うためにPaintGraphics
が必要です。しかし、テストケースでGraphicsContext
を開始すると何かが間違っているようです。 「内部グラフィックスはまだ初期化されていません」というエラーが表示されます。私には、GraphicsContext
と何か関係がありますが、わかりません。エラーがなぜ発生するのか、それをどのように解決するかについてのアイデアは非常に高く評価されます。JUunitのテストケースでまだ内部グラフィックスが初期化されていません
テストのためのソースコードは次のようになります「まだ初期化されていません内蔵グラフィックス」
package view;
import static org.junit.Assert.*;
import java.util.ArrayList;
import org.junit.Test;
import controller.LayerController;
import javafx.scene.canvas.Canvas;
import javafx.scene.layout.AnchorPane;
import model.Layer;
import model.PaintGraphics;
public class LayoutControllerTest {
Layer layer = new Layer(0, new Canvas(100,100));
ArrayList<Layer> layers = new ArrayList<Layer>();
PaintGraphics pGraphics = new PaintGraphics(layer.getCanvas().getGraphicsContext2D());
LayerController layerController;
@Test
public void addLayerTest() {
layers.add(layer);
layerController.addLayer(layer, (AnchorPane)layer.getCanvas().getParent());
}
}
は申し訳ありませんが、私はJavaFXのを使用していない使用してキャンバスオブジェクトを模擬することができるかもしれないとさえ、私は実際に(実際には環境が私はあなたのユニットテストを試すことができます設定されていませんmodel.Layerのようなパッケージは認識しません - どこのJavaシステムでは "モデル"よりも優れたパッケージ名が使われると思いますが、それは気まぐれです。)しかし、JUnitをどうやって実行しているのか疑問です。もしあなたがUnixのコマンドラインから実行しているのであれば、JavaがGUIを持っていないと思うかもしれません(ヘッドレスで走っています)、申し訳ありませんが、試験を含む。 –
ああ、モデルは私のパッケージで、レイヤークラスは自分で作ったクラスです。このコードは、単に落とす人のために走らせることはできないと考えられています。テストケースの意図が何であるかのヒントを与えるだけです。 ユニットはEclipseのIDEで実行されているだけです。この設定は、私が作った他のテストにも有効です。エラーはとにかく発生するため、テストは完了しておらず、意図したとおりに動作するはずがありません。 – Skarsh
ああ、申し訳ありませんが、それを理解したはずです。さて、ここに投稿できるテストケースを作成しようとお勧めします。私はあなたがそれを投稿しなければならないとは思わない - 孤立した、最小のテストケースを作成する行為は、多くの場合、問題を解決するために必要なすべてです - それは良いトラブルシューティング手法です。 –