1

我有一个真正简单的 JavaFX 项目来教自己如何使用 testfx 编写测试。我不知道如何防止自己复制我的sample.fxml文件。目前项目结构如下:

在此处输入图像描述

我的 Main.java 看起来像这样:

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    static Stage stage;

    @Override
    public void start(Stage stage) throws Exception {
        Main.stage = stage;
        Parent root = FXMLLoader.load(getClass().getResource("../../resources/sample.fxml"));
        Scene scene = new Scene(root, 300, 275);
        stage.setTitle("FXML Welcome");
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

我无法从我的测试类中访问 sample.fxml,而且通过复制它来学习 testfx 更容易——但这显然不是一个前进的方向。我还尝试通过在我的测试类中调用 start() 来创建场景,但我收到一个错误,提示不能多次调用 launch()。

有没有其他人遇到过这种情况并找到了前进的方向?

4

1 回答 1

1

为避免重复您的 .fxml 文件(我同意这并不理想),我建议您只从 src/main/resources 加载文件。您可以使用控制器的 ClassLoader(或非测试代码中的任何其他类)来执行此操作。

    String filename = "sample.fxml";
    ClassLoader loader = Controller.class.getClassLoader();
    File file = new File(loader.getResource(filename).getFile());
    Parent root = FXMLLoader.load(loader.getResource(filename));
于 2017-12-12T05:53:56.677 回答