Я делаю легкое приложение для рисования с использованием JavaFx. У меня возникли проблемы с моим классом LayerController
и его методами addLayer
и т. Д. Поэтому я подумал, что писать некоторые тестовые примеры JUunit было бы хорошей проверкой правильности моих методов. Чтобы сделать рассказ коротким, я рисую на Canvas
, используя его GraphicsContext
в самодельном классе, который я называю PaintGraphics
. Этот класс делает всю картину. 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-системы будут использовать лучшие имена пакетов, чем «model», это неприлично.) Однако ошибка заставляет задуматься, как вы используете JUnit. Если вы запускаете его из командной строки в Unix, есть вероятность, что Java не считает, что у него есть GUI (работает без головок), извините, я не могу помочь, если не смогу понять, содержащий тест. –
А, модель - это мой пакет, а класс Layer - это класс, который я сделал сам. Этот код, как предполагается, не может запускаться для людей, просто бросающих их, это только дать намек на то, что мое намерение в тестовом случае. Устройство просто запускается в моей среде IDE, которая является Eclipse. Эта настройка работает для любого другого теста, который я сделал. Тест не завершен и не должен работать должным образом, так как ошибка все равно возникает. – Skarsh
О, извините, должно было это понять. Хорошо, тогда я предлагаю вам попытаться создать тестовый пример, который можно опубликовать здесь. Я не думаю, что вам придется опубликовать его, хотя - для создания проблемы с изолированным минимальным тестовым случаем часто требуется всего, что нужно для решения этой проблемы - это хороший метод устранения неполадок. –