【发布时间】:2017-01-27 17:07:57
【问题描述】:
我正在使用 JavaFx 制作一个轻量级的绘画应用程序。
我的LayerController 类及其方法addLayer 等一直存在一些问题。所以我认为编写一些JUunit 测试用例来检查我的方法的正确性是一个好主意。简而言之,我在一个名为PaintGraphics 的自制课程中使用GraphicsContext 在Canvas 上作画。这个班级完成了所有的绘画。 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,甚至没有设置环境,所以我可以尝试你的单元测试(事实上,我真的不认识像 model.Layer 这样的包 - where这是来自??? 我认为任何 Java 系统都会使用比“模型”更好的包名称,这很不雅。)但是这个错误让我想知道你是如何运行 JUnit 的。如果您在 Unix 中从命令行运行它,Java 有可能认为它没有 GUI(无头运行),抱歉,除非我能弄清楚如何运行自包含测试。
-
啊,model是我的包,Layer类是我自己做的类。这段代码不应该能够为刚刚路过的人运行,它只是为了暗示我对测试用例的意图是什么。该单元只是在我的 IDE(即 Eclipse)中运行。此设置适用于我所做的任何其他测试。测试未完成,并且不应该按预期工作,因为无论如何都会发生错误。
-
哦,对不起,应该知道的。那么,我建议您尝试创建一个可以在此处发布的测试用例。不过我认为您不必发布它——创建一个孤立的、最小化的测试用例通常是解决问题所需要做的一切——这是一种很好的故障排除技术。
标签: java canvas javafx junit graphicscontext