gpt4 book ai didi

java - JUunit 测试用例中内部图形尚未初始化

转载 作者:行者123 更新时间:2023-12-02 03:21:09 24 4
gpt4 key购买 nike

我正在使用 JavaFx 制作一个轻量级绘画应用程序。我的 LayerController 类及其方法 addLayer 等遇到了一些问题。因此,我认为编写一些 JUunit 测试用例是检查其正确性的好主意我的方法。简而言之,我在一个名为 PaintGraphics 的自制类中使用其 GraphicsContextCanvas 上绘画。这个类(class)负责所有的绘画工作。 LayerController 需要一个 PaintGraphics 在图层上完成其工作。但当我在测试用例中启动 GraphicsContext 时,似乎出现了问题。我收到错误“内部图形尚未初始化。”。我猜这与 GraphicsContext 有关,但我不确定。任何有关错误发生原因以及如何解决该错误的想法将不胜感激!

测试的源代码如下所示:

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 要求在使用某些功能(例如,JavaFX 平台)之前首先初始化 JavaFX 平台时,通常会抛出异常“内部图形尚未初始化。” Canvas 。下面列出了解决此问题的方法:

  1. 创建一个扩展 Application 的小型模拟应用程序类,并在后台线程中启动它,以便 JavaFX 应用程序线程可以正确初始化,同时不会阻塞测试线程。
  2. 使用JavaFX测试库,例如TestFX
  3. 您也许可以使用 Mockito 模拟 Canvas 对象

关于java - JUunit 测试用例中内部图形尚未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39582837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com